Skip to main content
 首页 » 编程设计

python之使用 App Engine Python 接收非 ascii 电子邮件会导致奇怪的字符编码

2025年05月04日25lvdongjie

我正在使用 Google App Engine Python 接收电子邮件并将其存储在数据存储区中。

class LogSenderHandler(InboundMailHandler): 
    def receive(self, mail_message): 
        logging.info("Received a message from: " + mail_message.sender) 

当我收到来自 ASCII 地址的电子邮件时,一切正常:

Me [me@gmail.com] 存储为 Me [me@gmail.com]

但是,如果发件人值包含非 ascii 字符,则存储的数据值如下所示:

Mr Kröber [mr.kroeber@gmail.com] 存储为 =?ISO-8859-1?Q?Mr_Kr=F6ber?= [mr.kroeber@gmail.com ]

请您参考如下方法:

主题根据RFC 2047编码.查看Internationalized headers节email模块。

这是一个将主题解码为 Unicode 的示例:

>>> s='=?ISO-8859-1?Q?Mr_Kr=F6ber?= [mr.kroeber@gmail.com]' 
>>> from email.header import decode_header 
>>> decode_header(s) 
[('Mr Kr\xf6ber', 'iso-8859-1'), ('[mr.kroeber@gmail.com]', None)] 
>>> u = u' '.join(w.decode(e or 'ascii') for w,e in decode_header(s)) 
>>> u 
u'Mr Kr\xf6ber [mr.kroeber@gmail.com]' 
>>> print u 
Mr Kröber [mr.kroeber@gmail.com]