【发布时间】:2019-10-10 10:02:13
【问题描述】:
我需要从 Outlook 中的特定邮件下载所有附件。 如果只有一个附件,下面的代码可以正常工作,但是当邮件有多个附件时,它只下载一个。 有人可以帮我解决这个问题吗?谢谢。
我在 python 3.7 上运行它。
import imaplib
import email
import os
server =imaplib.IMAP4_SSL('outlook.office365.com',993)
server.login('Email id','Password')
server.select()
typ, data = server.search(None, '(SUBJECT "Subject name")')
mail_ids = data[0]
id_list = mail_ids.split()
for num in data[0].split():
typ, data = server.fetch(num, '(RFC822)' )
raw_email = data[0][1]
raw_email_string = raw_email.decode('utf-8')
email_message = email.message_from_string(raw_email_string)
for part in email_message.walk():
if part.get_content_maintype() == 'multipart':
continue
if part.get('Content-Disposition') is None:
continue
fileName = part.get_filename()
if bool(fileName):
filePath = os.path.join('C:\\Users\\lokesing\\', fileName)
if not os.path.isfile(filePath) :
fp = open(filePath, 'wb')
fp.write(part.get_payload(decode=True))
fp.close()
server.logout
print("Attachment downloaded from mail")
输出应该是下载到我系统中定义路径的所有附件。
【问题讨论】:
-
如果某个答案对您有用,最好投票赞成答案 =)
标签: python-3.x imap email-attachments