在Python中使用IMAP4库自动下载邮件附件
发布时间:2024-01-10 10:06:32
以下是使用IMAP4库在Python中自动下载邮件附件的示例代码:
import imaplib
import email
# 配置邮箱服务器和账号
IMAP_SERVER = "imap.example.com"
EMAIL_ACCOUNT = "your_email@example.com"
PASSWORD = "your_password"
# 连接邮箱服务器
imap_server = imaplib.IMAP4_SSL(IMAP_SERVER)
imap_server.login(EMAIL_ACCOUNT, PASSWORD)
# 选择邮箱文件夹
imap_server.select("INBOX")
# 搜索未读邮件
status, response = imap_server.search(None, "(UNSEEN)")
# 获取未读邮件ID列表
unread_email_ids = response[0].split()
# 下载附件
for email_id in unread_email_ids:
status, response = imap_server.fetch(email_id, "(RFC822)")
raw_email_data = response[0][1]
email_message = email.message_from_bytes(raw_email_data)
# 遍历邮件中的附件列表
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 filename:
with open(filename, "wb") as file:
file.write(part.get_payload(decode=True))
# 标记已读
for email_id in unread_email_ids:
imap_server.store(email_id, "+FLAGS", "\\Seen")
# 关闭连接
imap_server.close()
imap_server.logout()
这个代码示例演示了如何使用IMAP4库连接到邮箱服务器,搜索未读邮件,遍历邮件中的附件列表并将其下载到本地文件。它还包括将已下载的邮件标记为已读的步骤。
要使用此代码示例,请将以下值替换为您自己的邮箱服务器地址、邮箱账号和密码:
- IMAP_SERVER:您的邮箱服务器地址。
- EMAIL_ACCOUNT:您的邮箱账号。
- PASSWORD:您的邮箱密码。
请注意,IMAP4_SSL函数用于与邮箱服务器建立安全连接。如果您的邮箱服务器使用未加密的IMAP,可以改用IMAP4函数。
此代码示例适用于Python 3,并依赖于Python的内置IMAP库和email库。在运行之前,您需要安装所需的库。您可以通过运行以下命令来安装它们:
pip install imaplib pip install email
