【发布时间】:2014-06-13 10:25:52
【问题描述】:
这是我将文件附加到邮件的代码:
Multipart mp=new MimeMultipart("mixed");
BodyPart mbody=new MimeBodyPart();
mbody.setHeader("Content-Type", "text/html; charset=us-ascii");
mbody.setHeader("Content-Transfer-Encoding","7bit");
mbody.setContent(content2, "text/html");
mp.addBodyPart(mbody);
for(File file:f){
BodyPart mbody2=new MimeBodyPart();
DataSource ds=new FileDataSource(file.getAbsolutePath());
mbody2.setDataHandler(new DataHandler(ds));
mbody2.setFileName(ds.getName());
mbody2.setHeader("Content-Type", "multipart/mixed");
mbody2.setHeader("Content-Transfer-Encoding", "base64");
mp.addBodyPart(mbody2);
}
m.setContent(mp);
content2 是我在电子邮件中嵌入的 html 内容,我正在从数组列表 f 添加文件。
这里的问题是,虽然文件已附加并且我收到了电子邮件,但由于数据已损坏,我无法打开附件。我尝试附加的所有文件都会发生这种情况,例如 jpeg、pdf、电子表格、word 文档和 txt 文件。
我在这里读到:https://community.oracle.com/thread/1589120 这可能会发生,因为 JavaMail 使用的编码会混淆文件的二进制数据,添加 mbody2.setHeader("Content-Transfer-Encoding", "base64"); 应该可以解决问题,但这对我不起作用。
对可能出现的问题有任何想法吗?
谢谢
【问题讨论】:
标签: jakarta-mail email-attachments corrupt-data