Как сохранить HTML электронная почта как файл Outlook, используя Python? - PullRequest
1 голос
/ 05 марта 2020

Кто-то создал хороший шаблон электронной почты в Outlook и отправил его мне для автоматизации.

Я открыл электронное письмо в HTML и использовал это HTML для воссоздания точных изображений электронной почты, форматирования и всего остального.

Я могу отправить это электронное письмо просто отлично, но меня затем спросили, могу ли я сохранить все файлы электронной почты в папке, чтобы можно было щелкнуть по ней и открыть ее в их внешнем виде (.msg файл).

Я могу сохранить свою электронную почту как файл .mht и .elm, но ни один из них не откроется в Outlook.

Выглядит как простой запрос ...

  msgRoot = MIMEMultipart('related')...
  ...      
  ...
  msgAlternative = MIMEMultipart('alternative')
  msgRoot.attach(msgAlternative)

  msgText = MIMEText('no alternative text version')
  msgAlternative.attach(msgText)


  msgText = MIMEText("""
  ...
  ...#too much going on here to paste. formatting and attaching images.
  ...

Часть, где я могу успешно сохранить это как файл .mht:

  with open("C:/LOCAL/test/"+var+'.mht', 'w+') as out:
        gen = email.generator.Generator(out)
        gen.flatten(msgRoot)

Есть ли простой способ просто сохранить это как MSG-файл, чтобы он открылся в клиенте? Как предварительно загруженный файл электронной почты. Вы открываете его, он адресован и т.д. c ... просто нажмите «Отправить».

1 Ответ

0 голосов
/ 06 марта 2020

Работа с Методом SaveAs [MSDN] с OlSaveAsType для получения правильного формата файла

Пример

import win32com.client

Outlook = win32com.client.Dispatch("Outlook.Application")
olNs = Outlook.GetNamespace("MAPI")
Inbox = olNs.GetDefaultFolder(win32com.client.constants.olFolderInbox)
SubFolder = Inbox.Folders["folder name"]

for Item in SubFolder.Items:

    try:
        Item.SaveAs("D:\\Temp\\email.msg", 3)  # OlSaveAsType 3
    except Exception as e:
        print(e)

OlSaveAsType


+--------------+----+---------------------------------------+
| olDoc        |  4 | Microsoft Office Word format (.doc)   |
| olHTML       |  5 | HTML format (.html)                   |
| olICal       |  8 | iCal format (.ics)                    |
| olMHTML      | 10 | MIME HTML format (.mht)               |
| olMSG        |  3 | Outlook message format (.msg)         |
| olMSGUnicode |  9 | Outlook Unicode message format (.msg) |
| olRTF        |  1 | Rich Text format (.rtf)               |
| olTemplate   |  2 | Microsoft Outlook template (.oft)     |
| olTXT        |  0 | Text format (.txt)                    |
| olVCal       |  7 | VCal format (.vcs)                    |
| olVCard      |  6 | VCard format (.vcf)                   |
+--------------+----+---------------------------------------+
...