【问题标题】:Office Automation - Create msg file办公自动化 - 创建 msg 文件
【发布时间】:2020-09-19 19:57:42
【问题描述】:

我正在尝试使用 Python 创建 Outlook 消息文件 (.msg) 文件,特别是来自 Flask。

这是我所拥有的:

import win32com.client
def html2msg():
    com_object = win32com.client.Dispatch('Outlook.Application')
    com_file = com_object.CreateItem(0)
    com_file.Subject = 'Subject'
    com_file.HTMLBody = '<html><head></head><body><p>Test Email</p></body></html>'
    com_file.SaveAs('new.msg')
    com_file.Close(0)

当在 Windows 中以用户身份运行时,这可以正常工作,或者当烧瓶应用程序以用户身份手动运行时从烧瓶内发起......

当它在 IISwfastcgi 后面运行时出现问题:我收到此非特定错误:

File "<COMObject Outlook.Application>", line 2, in CreateItem
pywintypes.com_error: (-2147467260, 'Operation aborted', None, None)

我之前在 Word 中遇到过类似(ish)的问题,这是因为 com 对象在系统配置文件下运行导致的,通过创建文件夹解决了:https://theether.net/kb/100120?id=100120

有没有人设法完成类似的事情?

【问题讨论】:

标签: python flask winapi outlook com


【解决方案1】:

使用 wfastcgi 在 IIS 后面运行时出现问题:我收到此非特定错误:

Considerations for server-side Automation of Office 文章针对您遇到的错误指出以下内容:

Microsoft 当前不推荐也不支持任何无人值守、非交互式客户端应用程序或组件(包括 ASP、ASP.NET、DCOM 和 NT 服务)的 Microsoft Office 应用程序自动化,因为 Office 可能表现出不稳定Office 在此环境中运行时出现的行为和/或死锁。

如果您要构建在服务器端上下文中运行的解决方案,您应该尝试使用已确保无人值守执行安全的组件。或者,您应该尝试找到允许至少部分代码在客户端运行的替代方案。如果您使用来自服务器端解决方案的 Office 应用程序,该应用程序将缺少许多成功运行所需的功能。此外,您将在整体解决方案的稳定性方面承担风险。

作为一种解决方法,您需要使用 Outlook 所基于的低级 API - Extended MAPI 或任何围绕该 API 的包装器,例如 Redemption。

如果您只处理 Exchange 服务器配置文件,请考虑使用 EWS,有关详细信息,请参阅 Start using web services in Exchange

【讨论】:

  • 谢谢,根据您的回答,我与 Redemption 取得了相当大的进展,但不幸的是,它似乎与 Server 2019 不兼容。它抛出了一个错误:pywintypes.com_error: (-2147220998, '应用程序的操作系统或操作系统版本错误'、无、无)。您还有其他推荐的包装吗?
  • 您是否尝试过联系兑换开发者?
  • 您可以考虑使用 EWS。
  • 感谢您的指点,我最终使用了 MsgKit:github.com/Sicos1977/MsgKit
猜你喜欢
  • 2010-09-11
  • 1970-01-01
  • 2020-11-03
  • 2010-12-13
  • 2015-05-01
  • 1970-01-01
  • 2017-07-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多