使用JavaMail,我正在使用以下格式构建消息
+------------------------------------------------+
| multipart/related |
| +---------------------------+ +-------------+ |
| |multipart/alternative | | attachments | |
| | +-----------+ +---------+ | | | |
| | |text/plain | |text/html| | | | |
| | +-----------+ +---------+ | | | |
| +---------------------------+ +-------------+ |
+------------------------------------------------+
ASCII艺术归功于此问题的OP:http://www.coderanch.com/t/503380/java/java/Java-Mail-text-html-attachment
我觉得这是正确的格式,因为附件(image / gif,application / pdf等)对于理解整个消息非常重要。但是,我一直在做一些研究,并发现经常使用multipart/mixed
。
我应该用multipart/related
替换multipart/mixed
部分吗?如果是这样,为什么?
此格式的示例消息如下:
Content-Type: multipart/related;
boundary="----=_Part_6818257_562311419.1408632937947"
------=_Part_6818257_562311419.1408632937947
Content-Type: multipart/alternative;
boundary="----=_Part_6818256_1953685207.1408632937947"
------=_Part_6818256_1953685207.1408632937947
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
This is my message!
------=_Part_6818256_1953685207.1408632937947
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 7bit
<html><strong>This is my message!</strong></html>
------=_Part_6818256_1953685207.1408632937947--
------=_Part_6818257_562311419.1408632937947
Content-Type: application/pdf;name="document.pdf"
Content-Transfer-Encoding: base64
Content-ID: <attachment0>
X-Attachment-Id: attachment0
< insert lots of base64 encoding here >
------=_Part_6818257_562311419.1408632937947--
答案 0 :(得分:1)
在做了一些搜索之后,我发现了这个post,这实际上符合我的关注点。
根据RFC规范,构建电子邮件消息的最佳方式似乎是以下格式:
+-----------------------------------------------------------+
| multipart/mixed |
| +--------------------------------------+ +-------------+ |
| | multipart/alternative | | attachments | |
| | +------------+ +-------------------+ | | | |
| | | text/plain | | multipart/related | | | | |
| | | | | +---------------+ | | | | |
| | | | | | text/html | | | | | |
| | | | | | image/gif | | | | | |
| | | | | +---------------+ | | | | |
| | +------------+ +-------------------+ | | | |
| +--------------------------------------+ +-------------+ |
+-----------------------------------------------------------+
通过此消息配置,电子邮件客户端可以决定要显示的备用消息类型。此外,multipart/related
构成与电子邮件的邮件部分相关的内容,不包括附件。
有关multipart/related
from Wikipedia的更多说明:
multipart / related用于表示每个消息部分是a 整体的组成部分。它适用于复合对象 几个相互关联的组件 - 正确的显示不能 通过单独显示组成部分来实现。消息 由一个引用其他的根部分(默认情况下,第一个)组成 零件内联,可以反过来参考其他零件。消息部分 通常由“Content-ID”部分标题引用。的语法 引用是未指定的,而是由编码或 部分中使用的协议。
此子类型的一个常见用法是发送完整的网页 单个邮件中的图像。根部分将包含HTML 文档,并使用图像标签来引用存储在后者中的图像 部分。
在RFC 2387中定义
Microsoft Exchange的另一个great article引用解决方案。