[英]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.