繁体   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