这在Outlook 2013宏/ VBA中是否可行?我不知道从哪里开始。理想情况下,它会触发每个传入的电子邮件,并在FROM和REPLY TO地址不同时弹出警报。
答案 0 :(得分:0)
您可以处理Application类的NewMailEx事件。
此事件会针对Microsoft Outlook处理的每个已接收项触发一次。该项可以是几种不同项类型之一,例如,MailItem,MeetingItem或SharingItem。 EntryIDsCollection字符串包含与该项对应的条目ID。
当新邮件到达收件箱时以及客户端规则处理发生之前,将触发NewMailEx事件。您可以使用EntryIDCollection数组中返回的条目ID来调用NameSpace.GetItemFromID方法并处理该项。
您也可以创建一个可以调用VBA子的规则。 sub应该如下所示:
Public Sub Test(mail as MailItem)
' test
End Sub
最后,您可能会发现Getting Started with VBA in Outlook 2010文章很有帮助。
答案 1 :(得分:0)
在ThisOutlookSession中添加以下代码 - 您需要更新收件箱位置或您正在观看的任何文件夹。
我不认为我用Item.Recipients
查看了正确的属性 - 您需要找到回复。
收件人地址也可能无法始终显示正确的电子邮件地址 - 在互联网上搜索名为ResolveDisplayNameToSMTP
另外 - 我还没有测试过它。 :)
当您运行Application_StartUp例程或关闭并重新打开Outlook时,该过程将变为活动状态。
Dim WithEvents MyInboxFolder As Items
Private Sub Application_Startup()
Dim ns As Outlook.NameSpace
Set ns = Application.GetNamespace("MAPI")
Set MyInboxFolder = ns.Folders.item("Mailbox - Darren Bartrup-Cook").Folders.item("Inbox").Items
End Sub
Sub MyInboxFolder_ItemAdd(ByVal item As Object)
Dim sSenderEmailAddress As String
Dim vReplyRecipient As Variant
sSenderEmailAddress = item.SenderEmailAddress
For Each vReplyRecipient In item.Recipients
If vReplyRecipient.Address = sSenderEmailAddress Then
MsgBox "The same"
End If
Next vReplyRecipient
End Sub
Private Sub Application_Quit()
Dim ns As Outlook.NameSpace
Set MyInboxFolder = Nothing
Set ns = Nothing
End Sub
查找Eugene Astafiev提到的NewMailEx后的编辑 - 此事件会针对Microsoft Outlook处理的每个收到的项目触发一次 - 绝对值得深入研究,因为它会捕获所有文件夹,而不仅仅是收件箱中。