python发送email,python自动发邮件 foxmail
轮换:https://www.cnblogs.com/crystal雷/阿特里斯/3302427.html
邮件mime格式
参考:
Rfc4021,注册操作fmailandmimeheaderfields,
,
通常,MIME消息由两部分组成:消息头和消息体。这里分别称为邮件头和邮件体。
邮件标题
邮件头包含重要信息,如发件人、收件人、主题、时间、MIME版本和邮件内容类型。每条信息称为一个域,由域名后跟“:”和信息内容组成。可以是一条线,也可以是长线,也可以占用多条线。的第一行一定要写“开头”。也就是说,左侧不能有空格字符(空格和制表符)。后续行必须以空格字符开头。第一个空格字符不是信息本身所固有的,因此在解码过程中必须对其进行过滤。
邮件头中不允许有空行。有些邮件是邮件客户端软件无法识别的。因为第一行是空白的,所以显示源代码。
例如:
日期:2009年6月29日星期一18时39分03秒0800
发件人:=?gb2312?b?26zQocHB?=
致:“更多或更少”
抄送:“gxl0620”
BCG:=?gb2312?b?26zQocHB?=
主题:附件
消息id :200906291839032504254 @传奇sec.com
x-mailer : foxmail 6,15,201,21 [ cn ]
Mime版本:1.0
邮件正文
邮件正文大致分为以下几个域:
有些字段除了值之外还有参数。以及值和参数,";"参数和参数分区之间。参数名和参数值由“=”分隔。
消息正文包含消息的内容,消息的类型在消息头的“内容类型”字段中指明。典型的简单类型包括text/flat(纯文本)和text /html(超文本)。
多部分类型是MIME邮件的本质。消息正文分为几个段,每个段包含两部分:段标题和段正文,这两部分也用空行分隔。多部分有三种常见类型:多部分/混合、多部分/关系和多部分/备用。根据这些名称,不难推测出这些类型各自的含义和用途。下图总结了这些层次关系。
可以看出,为了给消息添加附件,必须定义多部分/混合段。如果有嵌入资源,则必须至少定义多个/关系段。如果纯文本和超文本共存,至少必须定义多个/备用段。
示例:
MIME代码
有关非ASCII文本,请参见rfc2047,mime part three:Message header extension。
MIME编码的两种方法:
邮件编码的第一个原因是互联网上很多网关不能正确传输8-8位内码的字符,比如汉字。编码原理是将8bit的内容转换成7bit的形式,以便能够正确传输,然后在接收端接收到之后,再恢复成8bit的内容。
MIME是多用途互联网邮件扩展协议的缩写。在MIME协议之前,电子邮件编码方法包括UUENCODE和其他编码方法。但是,由于算法简单,易于扩展,MIME协议现在已经成为电子邮件编码方式的主流,不仅包括8位字符,还包括电子邮件附件。
在编码方法中,MIME定义了两种编码方法:Base64和四极(qp)。
Base64
Base64是一种通用的方法,原理非常简单。4个字节代表3个字节的数据。因此,在这4个字节中,实际上只使用了前6位。所以不存在只能传输7个字符的问题。Base64的缩写一般是“B”。
Base64将输入字符串或数据的一部分编码为仅64个字符{A-Z , A-Z , 0-9 ,,/}。=用于填写此编码方法。每次,输入数据流取6位,这6位的值(0-63)将每3个字节编码成4个字符。(3乘84乘6);用“=”填充的字符少于4个。Base64算法非常简单。字符流按顺序放在一个24位的缓冲区中,当字符丢失时用零填充。然后,缓冲区被截断成四个部分,最高位优先,每个部分有6位,用64个字符重新显示。如果输入是1字节或2字节,则输出由等号“=”补充。这可以阻止由附加信息引起的编码混乱。
静等离子区(quiescent plasma)
另一种方法是四进制可打印(qp)方法,通常缩写为“Q”方法,最初是
Richard是用两个十六进制值来表示一个8位字符,然后在它前面加上“=”。所以我们可以看到QP编码的文件通常是这样的:=B3=C2=BF=A1=C7=E5=A3=AC=C4=FA=BA=C3=A3=A1。
QP编码要求编码后每行不得超过76个字符。当超过此限制时,将使用软换行符,用“=”表示编码行的断开行,后跟CRLF。(76个限制包括“=”)。
“=”等号编码为“=3D”。
当制表符和空格出现在行尾时,它们需要编码为“=09”(制表符)和“=20”(空格)
编码:encoded-word==?字符集?编码“?”编码文本?=
代码是“=?”还有呢。=括起来,=?后跟字符集名称,再后跟另一个“?”之后是编码方式,然后又是一个?之后是编码字符串。和字符集编码不区分大小写。
字符集可以是系统支持的任何字符集(iso-8859-1、utf-8、gb2312、gbk、gb18030.)
有两种编码方式:“b”或“b”代表base64编码;“Q”或“Q”代表QP编码。
通常,“编码字”是以“=?”开头的可打印ASCII字符序列,以?=,并且有两个?it’在两者之间。它指定了一个字符集和一种编码方法,并根据该编码方法的规则,将原始文本编码为图形ASCII字符。
与SMTP MIME的关系
从上图可以看出,发件人地址和收件人地址出现了两次,一次在smtp命令中(SMTP邮件地址),一次在邮件正文中(MIME邮件地址)。请注意:
邮件正文可以包含发件人和收件人的别名,但不能包含在smtp命令中。
秘密地址可能不会出现在电子邮件的正文中。不同的客户端实现是不同的。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。