gpt4 book ai didi

python-3.x - 如何使用 python IMAP 下载邮件的所有附件

转载 作者:行者123 更新时间:2023-12-04 14:17:57 27 4
gpt4 key购买 nike

我需要从 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")

输出应该是在定义的路径下下载到我的系统的所有附件。

最佳答案

您可以使用 imap_tools 包: https://pypi.org/project/imap-tools/

from imap_tools import MailBox, Q

# get all attachments for each email from INBOX folder
with MailBox('imap.mail.com').login('test@mail.com', 'password') as mailbox:
for msg in mailbox.fetch():
for att in msg.attachments:
print(att.filename, att.content_type)
with open('C:/1/{}'.format(att.filename), 'wb') as f:
f.write(att.payload)

关于python-3.x - 如何使用 python IMAP 下载邮件的所有附件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58320352/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com