python - 如何使用 Python 将 HTML 电子邮件另存为 Outlook 文件?

标签 python email outlook win32com

有人在 Outlook 中创建了一个不错的电子邮件模板并将其发送给我以实现自动化。

我打开了 HTML 格式的电子邮件,并使用该 HTML 重新创建了准确的电子邮件图像、格式等。

我可以很好地发送这封电子邮件,但随后有人问我是否可以将所有电子邮件文件保存在一个文件夹中,以便人们可以单击它并在 Outlook 中打开它(一个 .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 文件,以便在客户端中打开?就像预加载的电子邮件文件一样。你打开它,它已经写好了地址等等...只需点击发送即可。

最佳答案

SaveAs Method [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)                   |
+--------------+----+---------------------------------------+

关于python - 如何使用 Python 将 HTML 电子邮件另存为 Outlook 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60536289/

相关文章:

python - 将电子邮件消息解析为可读形式的 Python

c# - 确定 MailItem 是否在撰写或阅读模式下打开

email - Outlook VBA 用于发送带附件的电子邮件

python - 如何在 Django 管理的数据库中找到每个项目的最新行?

python - SAWarning : Object of type <Child> not in session, 沿着 'Parent.children' 的添加操作将不会继续

python - Pandas DataFrame.write_parquet() 并设置 Zstd 压缩级别

ios - 如何使用 Flutter 打开 iPhone 上的默认电子邮件应用程序?

javascript - HTML/JQuery : Email an Entire Div/Table

excel - 当 Excel 从 Outlook 中的宏打开时,如何阻止 Excel 打开用户窗体?

python - 获取通用 View 类中的类名