用python解码utf-8电子邮件附件文件名?

用python解码utf-8电子邮件附件文件名?,python,email,utf-8,Python,Email,Utf 8,我收到一封带有附件名的电子邮件,附件名如下: =?UTF-8?b?cmVhbF9hdHRhY2htZW50X25hbWUueGxz?= 但是,如果我查看Gmail中的原始文件,它显示如下: ------=_Part_1264195_253682143.1529181492460 Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet Content-Transfer-Encoding: ba

我收到一封带有附件名的电子邮件,附件名如下:

=?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--
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])

我如何才能找到真正的附件名?

之所以会出现这种情况,是因为电子邮件不支持utf-8,所以它有点像是预兆。这里发生的事情是
内容传输编码
标题告诉您有一些
base64
内容正在进行,您需要按如下方式解码文件名:

------=_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--
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])

所以,你实际上没有任何问题?那么这有什么意义呢?@Eypros这是我遇到并解决的一个问题,我决定同时添加问题和答案以帮助其他人::-)