![](/img/trans.png)
[英]Python: sending mail with SMTP (to Gmail) and can't encode headers properly
[英]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.