簡體   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