0

我遇到的问题是,当我在添加附件之前将电子邮件的消息正文部分添加到消息对象时,电子邮件的正文不会显示,但是当我在之后添加消息正文部分时它显示的所有附件都很好。

这很奇怪,但是我正在尝试使用 JavaMail 发送一封电子邮件。它具有电子邮件所需的所有常规内容(地址等)。您将在下面看到的“电子邮件”对象是一个 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 的更多信息,我会将其提供给您(或者您可以在此处找到整个目标代码),但我猜我只是缺少一些简单的东西。提前致谢。

4

2 回答 2

1

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

于 2012-06-15T23:59:48.550 回答
0

如果您正在创建带有附件的消息,为什么要使用多部分/替代方案?您应该使用(默认)多部分/混合。

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

于 2012-06-14T23:42:57.637 回答