繁体   English   中英

如何仅对Mime邮件中的必需标头进行编码?

[英]How to encode only the required headers in a Mime mail?

我正在使用Python的email包创建电子邮件(太棒了!)。

我发现最好使用email.Header对其中包含一些奇怪字符(重音等)的标头(例如主题)进行编码

为此,我正在执行以下操作,这很容易:

Header(value, 'UTF-8').encode()

它的效果很好,但它也可以对不需要编码的字段进行编码,比如

X-Mailer: My Service

变成

X-Mailer: =?utf-8?q?My_Service?=

在那种情况下,我觉得它毫无用处。

所以我的问题只有在有用时,有没有一种方法可以编码标头?

我曾考虑过使用try / except来与value.encode/decode()一起玩,并在except中调用Header().encode()函数,但我希望有一种更干净的方法吗?

好的,这是到目前为止我最好的方法。

尝试使用ascii字符集解码字符串。 如果失败,则使用Header.encode()对其进行编码,否则,将其Header.encode()

def encode_header(value):
    try:
        value.decode('ascii')
        return value
    except UnicodeDecodeError:
        return Header(value, 'UTF-8').encode()

由于这篇文章,我来到了这个解决方案: 如何检查Python中的字符串是否为ASCII?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM