我对mime消息的内容类型感到困惑。说我有一个mime消息。它是一个多部分的消息,正文部分就是这样的
当我创建正文部分时,我应该明确设置顶级mime消息的内容类型,然后是每个正文部分吗?
如果是,那么它们在上面的例子中应该是什么?
建议html使用 multipart/alternative
,建议为附件multipart/mixed
,建议内联使用multipart/related
。我正在使用所有这些,那么什么应该是内容类型的完整消息和不同的身体部位?
仅仅是为了获取信息,我尝试复制上面的场景,我没有为整体MimeMessage和身体部位设置内容类型。
但我仍然得到预期的东西,如纯文字,身体中的大胆字母,附件,右边詹姆斯的内嵌图像
为什么詹姆斯在没有设定内容类型的情况下解释哑剧信息和身体部位,为什么以正确的方式展示它们呢?
参考代码
MimeMessage msg = new MimeMessage(mailSession);
MimeMultipart mpart = new MimeMultipart();
MimeBodyPart bp = new MimeBodyPart();
bp.setText("plain text and html text like<b>Test</>", CHARSET_UTF_8, MESSAGE_HTML_CONTENT_TYPE);
// add message body
mpart.addBodyPart(bp);
// adding attachment
MimeBodyPart bodyPart = new MimeBodyPart();
bodyPart.setFileName("WordFile1");
file = new File("word file");
DataSource source = new FileDataSource(file);
bodyPart.setDataHandler(new DataHandler(source));
mpart.addBodyPart(bodyPart);
// adding image inline
MimeBodyPart bodyPart2 = new MimeBodyPart();
bodyPart2.setFileName("inline image");
file2 = new File("image1");
DataSource source2 = new FileDataSource(file);
bodyPart2.setDataHandler(new DataHandler(source));
bodyPart2.setDisposition(MimeBodyPart.INLINE);
bodyPart2.setHeader("Content-ID", "Unique-CntentId");
bodyPart2.setHeader("Content-Type", "image/jpeg");
mpart.addBodyPart(bodyPart2);
// At last setting multipart In MimeMessage
msg.setContent(mpart);
使用上面的代码,我在与James集成的ThunderBird中的正确位置获得了正确的html文本,纯文本,内嵌图像和附件。
所以我不明白何时何地将multipart/mixed
,multipart/alternative
,multipart/related
设置为Content-Type或邮件服务器是否在内部设置它?
答案 0 :(得分:2)
如果我理解你要做什么,你需要一个具有这种结构的消息:
multipart/mixed
multipart/alternative
text/plain - a plain text version of the main message body
multipart/related
text/html - the html version of the main message body
image/jpeg - an image referenced by the main body
application/octet-stream (or whatever) - the attachment
这意味着三个嵌套的多部分。除了默认的“混合”之外,您还需要为每个多部分指定子类型。
多部分/混合部分和多部分/替代部分相对简单。多部分/相关部分更复杂,您可能需要阅读RFC 2387和/或找一些其他教程来帮助您。
您可以通过删除multipart / related并简单地将html文本引用到互联网上的某个图像来简化结构。
您还应该测试所有您关心的邮件阅读器是否正确显示具有此结构的邮件。有些邮件阅读器比其他具有复杂结构的邮件阅读器做得更好。