总的来说,参照rfc4021标准,mime格式分为消息头和消息体两部分(邮件头和邮件体)。 本文大致描述邮件格式,仅供参考。
邮件头包含了发件人、收件人、主题、时间、MIME版本、内容的类型、内容的传输编码方式等重要信息。每条信息称为一个域,由域名后加冒号(“ : ”)和信息内容构成,可以是一行,也可以占用多行。域的首行必须顶头写(即左边不能有空白字符(空格和制表符));续行则必须以空白字符打头,且第一个空白字符不是信息本身固有的,解码时要过滤掉。另外,邮件头中不允许出现空行。
例如: Date: Wed, 15 Aug 2017 10:09:00 +0800 From: simba@www.simba.com To: "simba" <simba@www.simba.com> Cc: "simba" <simba@www.simba.com> BCC: "simba" <simba@www.simba.com> Subject: test Message-ID: <20170815100900.0E67523E1438@www.test3.com> X-mailer: Foxmail 6, 15, 201, 21 [cn] X-Spam: yes X-Rmilter-Greylist: Sender IP ::1 is whitelisted by configuration Mime-Version: 1.0包含内容解释及其他信息如下:
邮件内容有各种各样的(既纯文本,超文本,内嵌资源(比如内嵌在超文本中的图片),附件的组合),服务器通过第一个content-type判断邮件内容,如果包含了其他内容,邮件体被分为多个段,段中可包含段,每个段又包含段头和段体两部分。
+----------------------------------------multipart/mixed----------------------------------------+ | | | | | +---------------------------multipart/related---------------------------+ | | | | | | | | | | | +---------mutipart/alternative--------------+ +-------------+ | +-------+ | | | | | | 内嵌资源 | | | 附件 | | | | | | +-------------+ | +-------+ | | | | +---------------+ +---------------+ | | | | | | | 纯文本正文 | | 超文本正文 | | | | | | | +---------------+ +---------------+ | +-------------+ | +-------+ | | | | | | 内嵌资源 | | | 附件 | | | | | | +-------------+ | +-------+ | | | +-------------------------------------------+ | | | | | | | | | | | +-----------------------------------------------------------------------+ | | | | | +-----------------------------------------------------------------------------------------------+可以看出,如果在邮件中要添加附件,必须定义multipart/mixed段;如果存在内嵌资源,至少要定义multipart/related段;如果纯文本与超文本共存,至少要定义multipart/alternative段。什么是“至少”?举个例子说,如果只有纯文本与超文本正文,那么在邮件头中将类型扩大化,定义为multipart/related,甚至multipart/mixed,都是允许的。 --------------------- 作者:哪吒要结婚 来源: 原文:https://blog.csdn.net/weixin_37958284/article/details/77186279 版权声明:本文为博主原创文章,转载请附上博文链接!