我正在使用JavaMail发送带有html内容和附件的电子邮件。但是,当发送包含html内容和附件的电子邮件时,html内容将显示为纯文本。
我已将Content-Type
标题设置为text/html; charset=us-ascii
但在我收到的电子邮件中,Content-Type
显示为text/plain
。为什么会这样?
这是我的代码:
if(f!=null){ // f is an array containing the attachment file objects
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.setText(content);
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());
System.out.println(ds.getName());
mbody2.setHeader("Content-Type", "multipart/mixed");
mp.addBodyPart(mbody2);
}
m.setContent(mp);
//m.setHeader("Content-Type", "multipart/mixed");
//m.setHeader("Content-Transfer-Encoding","base64");
}
else{
m.setContent(content,"text/html");
m.setHeader("Content-Type", "text/html; charset=us-ascii");
m.setHeader("Content-Transfer-Encoding","7bit");
}
m.saveChanges();
如果我取消注释m.setHeader("Content-Type", "multipart/mixed");
,那么附件会显示为noname而不带扩展名,内容根本不会显示。
如果我发送没有附件的电子邮件,则会正确显示html内容。
感谢您的帮助。
答案 0 :(得分:0)
我明白了。
需要mbody.setContent(content, "text/html");
代替mbody.setText(content);
。