Python-cкрипт разбора писем из папки "Входящие" Outlook. Сохранение письма как html-страницы с сохранением отображения вложенных картинок
import win32com.client
import os
import datetime
import re
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
inbox = outlook.GetDefaultFolder(6).Items # 6- папка Входящие Outlook
msg = inbox.GetLast() # последнее письмо в ящике
path = r'C:\Users\user\Documents' # папка для сохранения вложений письма
while msg :
subject = str(msg.Subject) # тема письма
msg_date = datetime.datetime.strptime(str(msg.SentOn)[0:19], '%Y-%m-%d %H:%M:%S')
to_list = str(msg.To).split(';') # список получателей
sender = msg.SenderName # отправитель
text = str(msg.Body) # текст письма
html_text = str(msg.HTMLBody) # html код письма
# сохранение вложений
att_list=[]
for att in msg.Attachments:
att_name = att.FileName
att.SaveAsFile(path + '\\' + att_name) # сохранение файла вложения
att_list.append(att_name)
# корректировка html-кода для отражения вложенных картинок (замена адреса картинок на локальный вариант)
if att_list:
for fname in att_list:
# паттерн ссылки на вставленное изображение
pattern = '\"cid:' + fname + '@[\w]{,20}.[\w]{,20}\"'
html_text = re.sub(pattern, '\"' + fname + '\"', html_text, count=5)
# создание html-страницы с телом письма
with open(path + '\\' + 'index_.html', 'w', encoding='utf8') as file:
file.write(html_text)
msg = inbox.GetPrevious() # переход к следующему письму