如何在Python邮件中解码UTF文件名?

0 投票
1 回答
549 浏览
提问于 2025-04-18 04:29

我用这段代码来解压电子邮件文件,主要是解压MIME消息的部分。不过我遇到的问题是关于一些带有特殊字符的文件名,比如:

=?utf-8?B?2YbYs9iu2YcgINin2YTYrdin2YLZitmHINmC2LHYp9ix2K/Yp9ivINin2LM=?= =?utf-8?B?2KrYp9mG2K/Yp9ix2K8g2LPYp9iy2YogMTExMTEuZG9jeA==?=

程序在这里崩溃:

fp = open(os.path.join(directory, filename), 'wb')

因为

IOError: [Errno 2] No such file or directory

里面有一些不被接受的字符,我觉得问题可能出在这上面。这样的文件名没有任何东西像这个网站能解码的。

我面临的第一个问题是如何处理这个错误,第二个问题是如何解码文件名。

1 个回答

0

email.header.decode_header(header) 这个函数接受一个字符串作为输入,然后返回一个列表,列表里的每个元素都是一个元组,格式是 [(文本, 编码), ...]。其中,如果某个部分没有经过编码,那么它的 编码 就会是 None,这意味着它看起来是用 ascii 编码的。

撰写回答