用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这是我遇到并解决的一个问题,我决定同时添加问题和答案以帮助其他人::-)