如何将一个 MimeMultipart 添加到另一个?

How to add a MimeMultipart to another one?

这可能是一个非常愚蠢的问题,但我正在尝试撰写一封电子邮件,例如 suggested here

所以我有

MimeMultipart altPart = new MimeMultipart("alternative");

BodyPart textPart = new MimeBodyPart();
textPart.setContent("someText", "text/plain");
altPart.addBodyPart(textPart);

BodyPart htmlPart = new MimeBodyPart();
htmlPart.setContent("someHtml", "text/html");
altPart.addBodyPart(htmlPart);

MimeMultipart mixedPart = new MimeMultipart("multipart/mixed");

并且需要将 altPart 添加到 mixedPart,但我不能,因为唯一的添加方法只接受 BodyPart。什么鬼?

请注意,与 here 不同,我没有混淆包。

您需要使用 MimeBodyPart.setContent(Multipart mp) 方法将 MimeMultipart 包裹在另一个 MimeBodyPart 中。然后你可以将 MimeBodyPart 添加到 mixedPart 对象:

MimeMultipart alternativeMultipart = new MimeMultipart("alternative");

BodyPart textPart = new MimeBodyPart();
textPart.setContent("someText", "text/plain");
alternativeMultipart.addBodyPart(textPart);

BodyPart htmlPart = new MimeBodyPart();
htmlPart.setContent("someHtml", "text/html");
alternativeMultipart.addBodyPart(htmlPart);

MimeBodyPart alternativeBodyPart = new MimeBodyPart();
alternativeBodyPart.setContent(alternativeMultipart);

MimeMultipart mixedMultipart = new MimeMultipart("mixed");
mixedMultipart.addBodyPart(alternativeBodyPart);

MimeBodyPart textPart1 = new MimeBodyPart();
textPart1.setContent("someOtherText", "text/plain");
mixedMultipart.addBodyPart(textPart1);