我已经查看了大量示例代码,以便将附件下载到我的本地计算机,但没有一个正在运行,而且我被卡住了。
我可以获取邮件主题行,设置删除标记等,但不保存附件
除了这一点,一切都很好。这是我的代码,用于获取电子邮件的附件并在本地写入:
fileName = part.get_filename()
if bool(fileName):
filePath = os.path.join(detach_dir, 'attachments', fileName)
if not os.path.isfile(filePath) :
print (fileName)
fp = open(filePath, 'wb')
fp.write(part.get_payload(decode=True))
fp.close()
我认为这是我的问题。我看到的文件名不适合Windows文件名。我检查了调试,文件名是什么:
print (part.get_filename())
=?utf-8?Q?180=20Score=20Report=20Detail=20-=20Part=20Week=2Epdf?=
我想看到的是这样的文件名:
180 Score Report Detail Part Week.pdf
如果我登录gmail,我可以像往常一样下载文件,文件名就像我预期的那样。有些事情是错的,我不知道为什么我会看到这种格式或如何改变它。我可以在那里看到空格ASCII 20,但不知道如何将它全部转换为"普通"?
更新: 看起来像这样。不确定是否有办法轻松提取文件名。
print (part.as_string))
Content-Type: application/pdf
Content-Transfer-Encoding: Base64
Content-Disposition: Attachment;
Filename=
=?utf-8?Q?180=20Score=20Report=20Detail=20-=20Part=20Week=2Epdf?=
电子邮件"主题"也有这个格式与=?utf-8?...
如何解析该字符串以使其恢复为纯ASCII文本格式?
谢谢!