OlaApp = win32.Dispatch('Outlook.Application')
olNS = olApp.GetNameSpace('MAPI')
mail = ol.App.CreateItem(0)
mail.To = ''
mail.Subject = ''
mail.Body = ''
mail.Attachements.Add(max_file)
# here is max_file is latest file from the folder
mail.Display() -- able to see mail
mail.Send()
我可以看到电子邮件,但是发送电子邮件时出现以下错误:-
com_error :(-2147467260,'Operation aborted',None,None)
看来你在Outlook中遇到了一个安全问题…
当您尝试从外部应用程序自动执行Outlook时,Send
方法可能会触发异常。如果您试图访问任何受保护的属性或方法,它也可以是Outlook发出的提示。但你的情况是个例外。您会得到安全提示/异常,因为Outlook是通过以下方式之一在客户端计算机上配置的:
- 使用默认的Outlook安全设置(即没有设置组策略)
- 使用组策略定义的安全设置,但没有应用编程式访问策略
- 使用组策略定义的安全设置,设置为在防病毒软件不活动或过期时发出警告
您可以创建一个组策略,以防止在系统上安装任何最新的防病毒软件时显示安全提示,或者只是关闭这些警告(实际上不建议这样做)。
请参阅Outlook对象模型的安全行为文章。
你也可以考虑使用一种低级代码来构建Outlook,它不会产生安全问题——扩展的MAPI。考虑使用任何第三方包装器来包装API,比如Redemption。
另一个选项是Outlook安全管理器,它允许在运行时动态地抑制Outlook安全问题。
不要无模型地显示消息(display)并在消息仍在显示时调用Send。不是一个就是另一个。