Python 3 smtplib使用Unicode字符发送

Python 3 smtplib使用Unicode字符发送,第1张

Python 3 smtplib使用Unicode字符发送

关键在docs中:

class email.mime.text.MIMEText(_text, _subtype='plain', _charset='us-ascii')

MIMEText类是MIMENonMultipart的子类,用于创建主要类型文本的MIME对象。_text是有效负载的字符串。_subtype是次要类型,默认为纯文本。_charset是文本的字符集,并作为参数传递给MIMENonMultipart构造函数;它默认为us-
ascii。对文本数据不进行任何猜测或编码。

因此,您需要的显然 不是

msg = MIMEText('€10')
,而是:

msg = MIMEText('€10'.enpre('utf-8'), _charset='utf-8')

尽管没有全部清楚地记录下来,但是sendmail需要一个字节字符串,而不是Unipre字符串(这是SMTP协议指定的);查看

msg.as_string()
两种构建方式的外观-
给定“无猜测或编码”,您的方式中仍然有欧元字符(并且sendmail无法将其转换为字节串),我的没有’t(整个utf-8均已明确指定)。



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5601800.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-15
下一篇2022-12-15

发表评论

登录后才能评论

评论列表(0条)

    保存