Найти тему

Python-робот "Автоматическое сохранение почтовых вложений"

Всегда есть задачи, по которым вы можете задаться вопросом, как бы автоматически считывать электронную почту из Outlook и так же автоматически обрабатывать содержимое. Наиболее распространенный вариант использования - это автоматическая обработка вложений электронной почты. В этой статье я объясню вам, как использовать python для чтения электронной почты из Outlook и сохранения файлов вложений в указанную папку.

Нам нужно будет использовать библиотеку pywin32 . Убедитесь, что вы установили эту библиотеку и импортировали в свой скрипт:

import win32com.client
import os
from datetime import datetime, timedelta

Т.к. Outlook - это сторонняя программа нам в первую очередь нужно будет инициировать сеанс.

outlook = win32com.client.Dispatch('outlook.application')
mapi = outlook.GetNamespace("MAPI")

Папка "Входящие" в Outlook находится под индексом 6. Получаем объект папки "Входящие":

inbox = mapi.GetDefaultFolder(6)

Если у вас еще какие-либо подпапки и вам нужно считать письма от туда, тогда скрипт будет выглядеть так:

inbox = mapi.GetDefaultFolder(6).Folders["название вашей подпапки"]

Из объекта папки "Входящие" получим все сообщения:

messages = inbox.Items

Теперь сообщения можно перебирать в обычном цикле. Реализуем перебор сообщений с последующей выгрузкой вложений:

outputDir = r"C:\attachment"
try:
for message in list(messages):
try:
s = message.sender
for attachment in message.Attachments:
attachment.SaveASFile(os.path.join(outputDir, attachment.FileName))
print(f"attachment {attachment.FileName} from {s} saved")
except Exception as e:
print("error when saving the attachment:" + str(e))
except Exception as e:
print("error when processing emails messages:" + str(e))