Python:绕过程序化访问警告自动发送Outlook电子邮件

时间:2016-11-19 22:26:35

标签: python outlook win32com

我正在尝试使用Python在我的虚拟机上发送电子邮件警报。这是我的代码:

olMailItem = 0x0
obj = win32com.client.Dispatch("Outlook.Application")
newMail = obj.CreateItem(olMailItem)
newMail.Subject = "subject"
newMail.Body = "body"
newMail.To = "me.com"
newMail.display()
newMail.send()

我尝试使用newMail.send(),但我的Outlook发送的警告超过了自动执行这些警报的点。此外,我无法关闭我的Outlook,因为“Windows无法在我的计算机上找到防病毒签名”。

所以我尝试在newMail.display()之后使用Alt + S但是遇到了麻烦,因为新的电子邮件并不总是在焦点上。

然后我使用SetForegroundWindow确保它处于焦点但随后开始获取 pywintypes.error:(0,'SetForegroundWindow','没有错误消息可用')另一个SO帖子建议发送首先键,然后SettingForegroundWindow修复问题,它确实适用于我。

然而,现在每次关闭虚拟机窗口(不注销)或由于不活动而被锁定时,即使脚本的其余部分在后台运行,我也会得到 pywintypes.error :( 5,'SetForegroundWindow','访问被拒绝')触发电子邮件提醒时

是否有任何解决方法可以在后台绕过所有这些问题发送电子邮件警报?

谢谢,

西特

2 个答案:

答案 0 :(得分:0)

简而言之,您的选项是Extended MAPI(仅限C ++或Delphi),一个基于扩展MAPI构建的包装库,可以从任何语言(Redemption)或像{等实用程序一样使用{3}}

有关详细信息,请参阅ClickYes

答案 1 :(得分:0)

由于您无法控制防病毒,因此您应该查看Change Outlook's Programmatic Access Options中讨论的众多选项之一。扩展MAPI只是众多选项中的一种,如果有任何选项依赖于系统的许多其他细节,则可以使用。