查找由第三方电子邮件发送触发的Outlook事件

时间:2014-12-31 18:04:03

标签: vba outlook outlook-vba

我有一个通过Outlook发送电子邮件的第三方软件。它允许我们指定"回复"电子邮件地址,但不是"来自"电子邮件地址。我试图在VBA中写一些内容,注意到消息来自第三方软件并使用"回复"地址为"来自"在发送电子邮件之前的地址。当我使用第三方软件发送电子邮件时,我无法触发任何事件。

如果我使用

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
  MsgBox "Test"
End Sub

当我通过Outlook发送电子邮件时它会触发消息框,但不会在第三方软件发送时触发消息框。是否还有另一个我应该关注的事件?我正在查看应用程序事件或MailItem事件(http://msdn.microsoft.com/en-us/library/office/dn320237(v=office.15).aspx),除了发送事件之外什么都没有。我尝试了项目发送事件的示例代码

Public WithEvents myItem As Outlook.MailItem 



Sub SendMyMail() 

 Set myItem = Outlook.CreateItem(olMailItem) 

 myItem.To = "Dan Wilson" 

 myItem.Subject = "Data files information" 

 myItem.Send 

End Sub 



Private Sub myItem_Send(Cancel As Boolean) 

 myItem.ExpiryTime = #2/2/2003 4:00:00 PM# 

End Sub

但即使我通过Outlook发送电子邮件也不会触发。我在测试之前尝试重新启动Outlook。

这个问题很有希望:How do I trigger a macro to run after a new mail is received in Outlook? 但它涉及设置事件监听器到收件箱。我听说有一种方法可以某种方式更改设置,以防止第三方消息被自动发送,当发生这种情况时,它们会卡在Outlook的草稿文件夹中。我如何将事件监听器放在“草稿”文件夹而不是“收件箱”?

1 个答案:

答案 0 :(得分:1)

仅当通过Outlook对象模型发送邮件时才会触发Application.ItemSend事件。如果其他应用程序使用扩展MAPI,则不会触发任何事件。