簡體   English   中英

在python中解碼utf-8電子郵件附件文件名?

[英]Decode utf-8 email attachment filename in python?

我收到一封帶有附件名稱的電子郵件,看起來像:

=?UTF-8?b?cmVhbF9hdHRhY2htZW50X25hbWUueGxz?=

但是,如果我查看Gmail中的原始文件,它將顯示如下:

------=_Part_1264195_253682143.1529181492460
Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="real_attachment_name.xls"


------=_Part_1264195_253682143.1529181492460--

如何獲得真實的附件名稱?

發生這種情況是因為沒有預想到電子郵件會提供utf-8支持,所以已經有所了解。這里發生的是Content-Transfer-Encoding標頭告訴您正在執行一些base64操作,您需要解碼文件名,如下所示:

for part in mail.walk():
    if part.get_content_maintype() == 'multipart' or part.get('Content-Disposition') is None:
        continue

    filename = part.get_filename()

    # Find non-ascii filenames and decode

    transfer_encoding = part.get_all('Content-Transfer-Encoding')
    if transfer_encoding and transfer_encoding[0] == 'base64':
        filename_parts = filename.split('?')
        filename = base64.b64decode(filename_parts[3]).decode(filename_parts[1])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM