带有gui的java javamail多附件
尝试用GUI做一个基本的邮件发送者应用程序,但无论我做什么都无法发送/添加多个
附件(在旧的堆栈溢出问题中尝试了大多数答案-不起作用,
我不想手动添加“multipart.addBodyPart(messageBodyPart);”每一个附件。有没有一种方法可以添加多个附件,而无需重复代码)。我错过了什么,怎么了?(完整的GUI照片作为附件添加,红色文字是可变名称
link=[1]:https://i.stack.imgur.com/KVVc9.png)
try
{
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress(FromMail));
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(ToMail));
message.setSubject(SubjectMail);
//message.setText(ContentMail);
MimeBodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setText(ContentMail);
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(messageBodyPart);
messageBodyPart = new MimeBodyPart();
DataSource source = new FileDataSource(AttachmentPath);
messageBodyPart.setDataHandler(new DataHandler(source));
messageBodyPart.setFileName(attachment_name.getText());
multipart.addBodyPart(messageBodyPart);
message.setContent(multipart);
Transport.send(message);
JOptionPane.showMessageDialog(null, "success, message sent!");
}
catch (Exception exp)
{
JOptionPane.showMessageDialog(null, exp);
}
}
private void attachmentActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
JFileChooser chooser = new JFileChooser();
chooser.setMultiSelectionEnabled(true);
Component frame = null;
chooser.showOpenDialog(frame);
File file = chooser.getSelectedFile();
AttachmentPath = file.getAbsolutePath();
//path_attachment.setText(AttachmentPath);
path_attachment_area.setText(AttachmentPath);
}
String AttachmentPath;
# 1 楼答案
这是一个最小的GUI,有两个按钮,“附加”和“发送”,以及一个用于收集选定文件的文本区域。我没有复制完整的GUI,所以您必须将其集成到代码中
实际上,您只需选中
onAttach()
选择附件,以及onSend()
for循环将所有选择的附件添加到消息中还要注意,文本区域仅用于显示所选文件,但文件列表保存在ArrayList中