使用Outlook 2016通过Python发送电子邮件而无需打开电子邮件

nos*_*ear 5 python email outlook pywin32

import win32com.client as win32
outlook = win32.Dispatch('outlook.application')
mail = outlook.CreateItem(0)
mail.To = 'To address'
mail.Subject = 'Message subject'
mail.Body = 'Message body'
mail.HTMLBody = '<h2>HTML Message body</h2>' #this field is optional

# To attach a file to the email (optional):
attachment  = "Path to the attachment"
mail.Attachments.Add(attachment)

mail.Send()
Run Code Online (Sandbox Code Playgroud)

上面的代码完全正常。但是问题在于,需要在系统上打开Outlook并登录,然后才发送邮件。

有什么方法可以使用Outlook发送邮件而无需在系统上实际运行Outlook应用程序?

Eug*_*iev 2

您需要使用 Outlook REST API,而不需要自动化 Outlook。看一下以下示例:

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

如果您正在构建在服务器端上下文中运行的解决方案,则应尝试使用可安全执行无人值守执行的组件。或者,您应该尝试找到允许至少部分代码在客户端运行的替代方案。如果您使用服务器端解决方案中的 Office 应用程序,该应用程序将缺乏许多成功运行所需的功能。此外,您还将面临整体解决方案稳定性的风险。请阅读Office 服务器端自动化注意事项一文来了解更多相关信息。