电子邮件中缺少消息,具体取决于bodypart的顺序

时间:2012-06-14 23:19:29

标签: java email javamail attachment html-email

我遇到的问题是在我添加附件之前将电子邮件的正文部分添加到邮件对象中,而电子邮件正文未显示,但是当我在所有附件之后添加邮件正文部分时,它显示正常。

这很奇怪,但我正在尝试使用JavaMail发送电子邮件。它具有电子邮件所需的所有常规内容(地址等)。您将在下面看到的“email”对象是一个Javabean,它包含附件的mimeBodyParts以及消息体,主题等的mimeBodyPart ......

这是工作的代码(如上所述)

Multipart multipart = new MimeMultipart("alternative");
message.setSubject(email.getSubject());
multipart.addBodyPart(email.getContentBodyPart()); //This is the only line that moves
for (MimeBodyPart mimeBodyPart : email.getBodyParts()) {
  multipart.addBodyPart(mimeBodyPart);
}
message.setContent(multipart);

以下是执行的代码:

Multipart multipart = new MimeMultipart("alternative");
message.setSubject(email.getSubject());
for (MimeBodyPart mimeBodyPart : email.getBodyParts()) {
  multipart.addBodyPart(mimeBodyPart);
}
multipart.addBodyPart(email.getContentBodyPart()); //This is the only line that moved
message.setContent(multipart);

如果您需要有关电子邮件javabean的更多信息,我会将其提供给您(或者您可以找到整个目标代码here),但我猜我只是遗漏了一些简单的东西。提前谢谢。

2 个答案:

答案 0 :(得分:1)

只是为了澄清其他人阅读此内容:如果您使用“替代”MimeMultipart,其所有部分应该是相同内容的替代版本。此外,根据相关的RFC,最后应添加内容的首选版本。在创建具有纯文本回退的HTML电子邮件时,您会做很多事情。这就是他们在JavaMail文档中警告您阅读RFC的原因。

答案 1 :(得分:0)

如果您要创建包含附件的邮件,为什么还要使用多部分/备用邮件?您应该使用(默认)multipart / mixed。

您是否在不了解代码的情况下剪切并粘贴了该代码? : - )