Python. Работа с Outlook
Необходимо отправить автоматически письмо в Outlook. Не могу добавить подпись с тем форматированием, которое у нее есть (получается вставить только текст). Кусочек кода:
path_signature = os.getenv('APPDATA') + '\\Microsoft\\Signatures\\Подпись.htm'
signature = html.parse(path_signature).xpath('//body')[0].text_content()
app = win.Dispatch("Outlook.Application")
# Создания письма
mess = app.CreateItem(0)
mess.To = "[email protected]"
# В копию
mess.CC = "[email protected]"
# Тема
mess.Subject = theme + ' - ОТК'
# Тело
mess.Body = 'Добрый день\n\nДокументы размещены в папке {}\n\n {}'.format(self.server_directory, signature)
# Отправка
mess.Send()
Ответы (1 шт):
Автор решения: Костя Килиманов
→ Ссылка
Разобрался с вопросом) еще добавил некоторые вещи. если кому-то интересно - оставлю решение
import win32com.client as win
from bs4 import BeautifulSoup
def send_message(theme, To, Body, Att_path, Attachment = False):
path_signature = os.getenv('APPDATA') + '\\Microsoft\\Signatures\\Подпись.htm'
with open(path_signature, "r") as f:
contents = f.read()
soup = BeautifulSoup(contents, 'lxml')
signature = soup.body
app = win.Dispatch("Outlook.Application")
# Создания письма
mess = app.CreateItem(0)
mess.To = To
# В копию
mess.CC = "кого в копию"
# Тема
if Attachment:
mess.Subject = theme + ' схема расключения'
mess.Attachments.Add(Att_path)
else:
mess.Subject = theme + ' - ОТК'
# Тело
mess.HTMLBody = Body + signature
# Отправка
mess.Send()
messagebox.showinfo('Успешно!', 'Письмо отправлено!')
До этого тело письма формировалось как текст. В исправленном варианте формируется как HTML. Поэтому просто берем содержимое тега body из .html, в котором хранится подпись. При этом текст, который добавляем в тело письма, тоже пишем с использованием тегов html