如何在Outlook VBA中发送后保留对邮件的引用



我正在使用outlook发送电子邮件(从Excel VBA(

With OutlookApplication.CreateItem(olMailItem)
.Subject = topic
.to = emailAddress
.HTMLBody = content
.Send
msgbox .Sent
end with

msgbox .Sent引发错误。看起来邮件的引用在发送后就消失了。有没有办法在发送邮件后检查.sent或.sentOn参数?

当项目添加到Sent Items文件夹(即发送(时,可以检查Sent属性。您可以连接到Sent Items文件夹的ItemAdd事件,并在那里检查Sent属性。

请注意,当您尝试自动化Outlook时,Send方法可能会引发异常。在这种情况下,您很可能面临Outlook安全问题。如果您试图访问任何受保护的属性或方法,Outlook也会发出提示。但在你的情况下,这是一个例外。您会收到安全提示/异常,因为Outlook是通过以下方式之一在客户端计算机上配置的:

  • 使用默认的Outlook安全设置(即,未设置组策略(
  • 使用组策略定义的安全设置,但未应用编程访问策略
  • 使用组策略定义的安全设置,组策略设置为在防病毒软件处于非活动状态或过期时发出警告

如果系统上安装了任何最新的防病毒软件,您可以创建一个组策略来防止显示安全提示,或者只关闭这些警告(不建议这样做(。

请在Outlook对象模型的安全行为文章中了解更多信息。

此外,您还可以考虑使用一种生成Outlook的低级别代码,该代码不会产生安全问题-扩展MAPI。考虑在API周围使用任何第三方包装器,如Redemption。

另一个选项是Outlook安全管理器,它允许在运行时动态抑制Outlook安全问题。

最新更新