为什么网络邮件(如Gmail)使用多部分/替代子类型(在使用HTML编写时)发送MIME邮件,而其他人则将HTML作为MIME发送,其中包含text / html部分(不使用其他子类型)?< / p>
答案 0 :(得分:9)
section 5.1.4的RFC 2046定义multipart/alternative
MIME类型,以允许发件人提供相同消息的不同,可互换的表示形式,并将其留给接收者选择最适合其能力的表现形式。请注意,虽然应保留用户的每个表示的一般含义,但是从一个表示到另一个表示通常会丢失一些信息(例如text/plain
缺少关于text/html
的格式化信息。替代方案通常应该从最普通的到最富有的,即如果替代方案再次text/html
和text/plain
,那么text/plain
应该首先排序。这有助于非符合MIME的查看器的用户首先显示最容易解释的部分。通常,符合MIME的查看器应显示它能够查看的最后一个表示,因为它是最优选的。
此内容类型通常与multipart/mixed
形成对比,其中在单个邮件中合并了许多不同的资源。
某些邮件服务提供邮件multipart/alternative
的主要原因是支持接收端的不同类型的查看应用程序。例如,某些观看者缺乏呈现HTML的能力,并且要求消息的text/plain
表示完全可读。与此同时,其他观看者确实能够呈现HTML,并且可以在text/html
传递消息时提供更好的用户体验。通过提供包含在multipart/alternative
消息中的两种表示形式,可以在支持广泛的观看者和增强用户体验之间进行权衡的最灵活的解决方案。
有关详细信息,请参阅RFC 2046。
答案 1 :(得分:8)
multipart/alternative
表示每个部分是相同(或类似)内容的“替代”版本,每个内容采用由“Content-Type”标题表示的不同格式。这些格式是按照他们对原作的忠诚度来排序的,其中最忠实的第一个和最忠实的最后一个。
Gmail之类的邮件代理知道他们在做什么,并将text/html
转换为text/plain
并将两个替代品放入电子邮件中,让接收方决定使用哪种替代方案。
还有一些邮件代理不知道如何从html内容中提取纯文本版本,只是因为开发人员没有费心去实现它,所以他们只发送text/html
的替代品。
有时 - 我称之为疯狂的 - 发送multipart/alternative
,但实际上只提供text / html而没有任何其他选择。哪个不是很好,但它并不违反任何规范。