Как скачать вложения из вторичной электронной почты outlook по Python? - PullRequest
1 голос
/ 03 февраля 2020

Мне нужно скачать приложение из внешнего вида, но не из моего внешнего вида.

Мне нужно это с адреса вторичной группы (например, FiTeam@email.com с pass = asdf).

Сейчас у меня есть рабочий скрипт, который загружает его с моего внешнего адреса.

    import os


path = os.path.expanduser("D:\DownloadingEmail\\replenishment")
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
inbox = outlook.GetDefaultFolder(6)
messages = inbox.Items


def saveattachemnts(subject):
    for message in messages:
        if message.Subject.startswith(subject):
            # body_content = message.body
            attachments = message.Attachments
            attachment = attachments.Item(1)
            for attachment in message.Attachments:
                attachment.SaveAsFile(os.path.join(path, str(attachment)))
                if message.Subject == subject and message.Unread:
                    message.Unread = False
                continue

saveattachemnts('Replenishment')

Как я могу изменить его, чтобы загрузить вложение из папки входящих сообщений в FiTeam@email.com?

Ответы [ 2 ]

0 голосов
/ 04 февраля 2020

Для доступа к общему inbox попробуйте следующее

inbox = outlook.Folders["FiTeam@email.com"].Folders["Inbox"]

, также вы должны исправить ("D:\DownloadingEmail\\replenishment") на ("D:\\DownloadingEmail\\replenishment")


SaveAsFile(os.path.join(path, str(attachment) должно быть SaveAsFile(os.path.join(path, str(attachment.FileName)


message.Unread = False до message.UnRead


см. Мой пример кода ниже-

import os
import win32com.client
path = os.path.expanduser("D:\\DownloadingEmail\\replenishment")
print(path)
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
inbox = outlook.Folders["FiTeam@email.com"].Folders["Inbox"]
messages = inbox.Items


def save_attachments(subject):
    for message in messages:
        if message.Subject.startswith(subject):

            for attachment in message.Attachments:
                attachment.SaveAsFile(os.path.join(path, str(attachment.FileName)))
                if message.UnRead:
                    message.UnRead = False
                continue


save_attachments('Replenishment')
0 голосов
/ 03 февраля 2020

Вызовите outlook.CreateRecipient("FiTeam@email.com"), затем передайте возвращенный объект Recipient на outlook.GetSharedDefaultFolder()

...