Парсинг писем из Outlook в Python

Apr 26, 2020 07:52


Originally published at Data Digging. You can comment here or there.

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() # переход к следующему письму

Копилка

Previous post Next post
Up