0

我正在使用 Python 构建 MIME 编码的电子邮件,而我与亚马逊 SES 编码的 MIME 相同的电子邮件有所不同。

我正在使用 utf-8 和quoted-printable 进行编码。

对于字符“å”(即顶部带有小圆圈的字母“a”),我的编码产生

=E5

和其他编码产生

=C3=A5

它们在我的 gmail 中看起来都不错,但我觉得编码不同很奇怪。其中一个是对的,另一个是错的吗?

以下是我的 Python 代码,以防万一。

====

cs = charset.Charset('utf-8')
cs.header_encoding = charset.QP
cs.body_encoding = charset.QP

# See https://stackoverflow.com/a/16792713/136598
mt = mime.text.MIMEText(None, subtype)
mt.set_charset(cs)
mt.replace_header("content-transfer-encoding", "quoted-printable")
mt.set_payload(mt._charset.body_encode(payload))
4

1 回答 1

1

好的,感谢 Artur 的评论,我能够弄清楚这一点。

字符的 utf-8 编码是两个字节,而不是一个,因此您应该期望看到两个引用的可打印编码,而不是一个,因此 AWS SES 编码是正确的(不足为奇)。

我发送的是 unicode 文本而不是 utf-8,它只导致一个引用的可打印字符。事实证明它起作用了,因为 gmail 支持 unicode。

对于我问题中的 Python 代码,我需要手动将文本编码为 utf-8。我在想那MIMEText会为我做到这一点,但事实并非如此。

于 2017-06-18T22:52:02.480 回答