最近研究用python发送Email的问题,对email header等方面的编码颇有心得,着笔记录下,以备后查。
用python发的整个邮件,每个元素都以/r/n结束(当然如果内容里有/r/n如何就不太清楚了)。其邮件内容都是被一个大的boundary包起来的,Content-Type为multipart/mixed。
header部分,大致有MIME-Version、From、To、Subject等,看情况而定(事实上,我观察注意到,很多邮件服务器在处理邮件的时候,都会自动会加上些邮件头,如Received等)。下面重点记录下这几个常用项。
From表示邮件来源,格式为:显示名 <邮件地址>,记得两个项目之间应使用空格隔开。其中显示名部分可以允许为中文,但如果是中文,就要注意编码的问题。用python来实现是非常简单的:
打印出来,就是:=?utf-8?b?5YiY5byA6Imv?= <kailiangliu@gmail.com>。可以看出,这个内容里本身就有编码信息,因此反过来解析也很简单。因为=?、?、?=