从共享的Outlook邮箱下载附件

时间:2018-03-09 13:44:20

标签: python outlook

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

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()

1 个答案:

答案 0 :(得分:0)

假设您的服务器支持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)