首先,我在这台计算机上没有代码示例,但我有一个非常相似的示例。
(http://docs.python.org/library/email-examples.html)
第4个。
我的问题在于这段代码
counter = 1
for part in msg.walk():
# multipart/* are just containers
if part.get_content_maintype() == 'multipart':
continue
# Applications should really sanitize the given filename so that an
# email message can't be used to overwrite important files
filename = part.get_filename()
if not filename:
ext = mimetypes.guess_extension(part.get_content_type())
if not ext:
# Use a generic bag-of-bits extension
ext = '.bin'
filename = 'part-%03d%s' % (counter, ext)
counter += 1
fp = open(os.path.join(opts.directory, filename), 'wb')
fp.write(part.get_payload(decode=True))
fp.close()
当我获取没有 iso 或 utf 编码文件名的电子邮件时,此代码可以正常工作。但是当附件名称是 iso 编码时,文件名不在 get_filename 内,但文件名在 part["Content-type"] 内采用编码形式(我相信)
上面的例子试图猜测扩展名,如果找不到文件名,它只是给它一个部分文件名。我想要的是文件名。
有没有人处理过这样的问题,你做了什么来解决它?