当我在gmail web客户端使用pyramid_mailer发送电子邮件时,一切看起来都不错,但在任何桌面客户端中subject
都包含问号,例如:
如果电子邮件subject
标题的开源代码如下:
Subject: =?utf-8?b?W9CS0LXQsS3Qk9CY0KEt0LrQvtC70YzRhtC10LLQsNC90LjQtV0g0JDQvdC+0L3Q?=
=?utf-8?b?uNC8IDIwMTItMTAtMTggMTc6NTg6MzIg0YHQvtC30LTQsNC7INC30LDQv9C40YHR?=
=?utf-8?b?jCAjMTM1OSAo0LrQvtC70YzRhtC10LLQsNC90LjQtSk=?=
如您所见,它分为三个部分。尝试执行python代码:
import email.header
print email.header.decode_header('=?utf-8?b?W9CS0LXQsS3Qk9CY0KEt0LrQvtC70YzRhtC10LLQsNC90LjQtV0g0JDQvdC+0L3Q?=')[0][0]
print email.header.decode_header('=?utf-8?b?uNC8IDIwMTItMTAtMTggMTc6NTg6MzIg0YHQvtC30LTQsNC7INC30LDQv9C40YHR?=')[0][0]
print email.header.decode_header('=?utf-8?b?jCAjMTM1OSAo0LrQvtC70YzRhtC10LLQsNC90LjQtSk=?=')[0][0]
我们得到以下结果:
[Веб-ГИС-кольцевание] Анон
�м 2012-10-18 17:58:32 создал запис
� #1359 (кольцевание)
我如何摆脱这个问题?
答案 0 :(得分:1)
我只是committed a fix,所以你应该能够在repoze.sendmail 4.0或4.0b2中获取它,无论哪个是下一个版本。
答案 1 :(得分:0)
是的..对我来说听起来像个bug ... python base64.encodestring()将长字符串拆分成多行,我猜是导致问题。
解决方案是替换使用过的主题中的换行符或使用binascii.b2a_base64进行编码..