Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 电子邮件标题使用ehtml url编码获取文件名_Python_Email_Parsing_Encoding_Email Headers - Fatal编程技术网

Python 电子邮件标题使用ehtml url编码获取文件名

Python 电子邮件标题使用ehtml url编码获取文件名,python,email,parsing,encoding,email-headers,Python,Email,Parsing,Encoding,Email Headers,我遇到了解析用html url编码的文件名的问题 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0*=utf-8''%48%61%72%6D%6F%6E%6F%67%72%61%6D; filename*1*=%32%30%31%38%20%C5%81%75%6B%61%73%7A%65%77; filename*2*=%61%20%33%35%2E%70%64%66 get_fil

我遇到了解析用html url编码的文件名的问题

Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename*0*=utf-8''%48%61%72%6D%6F%6E%6F%67%72%61%6D;
 filename*1*=%32%30%31%38%20%C5%81%75%6B%61%73%7A%65%77;
 filename*2*=%61%20%33%35%2E%70%64%66
get_filename之后,它返回已用扩展ASCII字符解码的文件名。在这种情况下,解码\u头无法再处理。以下是例外情况:

  File "/usr/lib/python2.7/email/header.py", line 73, in decode_header
header = str(header)
UnicodeEncodeError: 'ascii' codec can't encode character u'\u0141' in position 26: ordinal not in range(128)
下面是获取文件名的一段代码:

for part in msg.walk():
        if part.get_content_maintype() == 'multipart':
            continue
        content = part.get_payload(decode=True)
        if content:
            filename = part.get_filename()
            if filename:
                filename = decode_header(filename)
                [...]
所有其他正常的编码似乎都能工作。问题是,有时get_文件名返回解码字符串或编码字符串。你能告诉我怎么解决这个问题吗



我得到UnicodeError的确切内容是“Harmonogram 2018Łukaszewa 35.pdf”

第二条消息包含并正在工作:

Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="To =?UTF-8?b?Y8OzxbwsIMW8ZQ==?= ze Szwecji, to nic,
=?UTF-8?b?xbxl?= ze Szwecji..xlsx"
试试这个

从email.header导入头,解码头,生成头
file_name=make_头(解码_头(part.get_filename()))

您真的需要为此使用Python 2吗?无论如何,转向Python3肯定会出现在您的近期路线图中,并将至少部分地解决这个问题。请尝试Python 3.6或更高版本,以获取稍微经过大修的
电子邮件
库。可能的重复项当您收到UnicodeEncodeError时,能否显示文件名的确切内容?当我收到UnicodeError时,确切内容为“Harmonogram 2018Łukaszewa 35.pdf”