python发送email,python自动发邮件 foxmail

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: