从共享Outlook邮箱下载附件

2024-04-29 19:41:12 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我用来从收件箱下载带有特定主题的附件的代码。你知道如何调整脚本来访问邮箱中的共享文件夹并从中下载附件吗?在

import imaplib
import email
import os

svdir = 'Directory to Save'


mail=imaplib.IMAP4('IMAP Server')
mail.login("UserName","Password")
mail.select("Inbox")

typ, msgs = mail.search(None, '(SUBJECT "Subject Of Mail")')
msgs = msgs[0].split()

for emailid in msgs:
    resp, data = mail.fetch(emailid, "(RFC822)")
    email_body = data[0][1] 
    m = email.message_from_string(email_body)


    if m.get_content_maintype() != 'multipart':
     continue

    for part in m.walk():
        if part.get_content_maintype() == 'multipart':
            continue
        if part.get('Content-Disposition') is None:
            continue

        filename=part.get_filename()
        if filename is not None:
            sv_path = os.path.join(svdir, filename)
            if not os.path.isfile(sv_path):
                print sv_path       
                fp = open(sv_path, 'wb')
                fp.write(part.get_payload(decode=True))
                fp.close()

Tags: pathimportnone附件getifosemail
1条回答
网友
1楼 · 发布于 2024-04-29 19:41:12

假设您的服务器支持EWS,请尝试改用exchangelib

from exchangelib import Account, Credentials, FileAttachment

a = Account(
    'some_other_user@example.com',
    credentials=Credentials('UserName', 'Password'), 
    autodiscover=True
)
msg = a.inbox.get(subject='Subject Of Mail')
for attachment in msg.attachments:
    if isinstance(attachment, FileAttachment):
        local_path = os.path.join('/tmp', attachment.name)
        with open(local_path, 'wb') as f:
            f.write(attachment.content)

相关问题 更多 >