欢迎访问宙启技术站
智能推送

在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