邮件编码解码

标签:Python

之前在用GAE收邮件时,曾经遇到了不知道怎么识别邮件编码的问题。在《字符,字节和编码 - Characters, Bytes And Encoding》这篇文章中有提到邮件编码,所以就转载一下。

首先,邮件的body里内含了Content-Type和Content-Transfer-Encoding,先用Content-Transfer-Encoding的编码类型解码,再用Content-Type的字符集解码,就能获得unicode。

其次是标题、收件人、发件人等字段。
这些字段如果不是英文的话,会变成类似这种形式:
Subject: =?GB2312?B?1tA=?=
=?和?之间的GB2312就是Content-Type,之后2个?之间的B表示Base64编码,后面的1tA=为编码后的内容。
解码也和上面一样简单:
base64.b64decode('1tA=').decode('GB2312')

你还有可能收到这样的:
Subject: =?GB2312?Q?=D6=D0?=
注意2个?之间是Q,这表示Quoted-Printable,需要用到一个不太常见的标准模块:
quopri.decodestring('=D6=D0').decode('GB2312')

0条评论 你不来一发么↓

    想说点什么呢?