【发布时间】:2014-12-31 18:04:02
【问题描述】:
我有一个通过 Outlook 发送电子邮件的第三方软件。它允许我们指定“回复”电子邮件地址,但不能指定“发件人”电子邮件地址。我正在尝试在 VBA 中编写一些东西,当消息来自该第三方软件时会注意到,并在发送电子邮件之前使用“回复”地址作为“发件人”地址。当我使用第三方软件发送电子邮件时,我无法触发任何事件。
如果我使用
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
MsgBox "Test"
End Sub
当我通过 Outlook 发送电子邮件时它会触发消息框,但第三方软件不会触发。我应该关注另一个事件吗?我正在查看 Application 事件或 MailItem 事件 (http://msdn.microsoft.com/en-us/library/office/dn320237(v=office.15).aspx),但 Send 事件似乎完全合适。我尝试了项目发送事件的示例代码
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 的草稿文件夹中。我将如何将事件侦听器放在草稿文件夹而不是收件箱上?
【问题讨论】:
-
有趣的问题。你有没有机会指定这个第三方是什么?
-
这是 Microsoft Dynamics GP。