我正在使用带有两个电子邮件帐户的Outlook 2016,并且我已经设置了一个规则来调用VBA脚本来处理其中一个帐户上的传入消息。有没有办法,使用VBA访问触发我正在使用的规则的电子邮件对象?
我需要的只是获取每封邮件的发件人电子邮件。
PS:我使用的是POP3,而不是Exchange。此外,我尝试过Application_NewMail()而不是规则,但它没有用。
答案 0 :(得分:0)
将VBA宏子项分配给规则时,它应如下所示:
Public Sub Test(mail as MailItem)
' where mail is the object which triggered the rule
MsgBox mail.SenderEmailAddress
End Sub
因此,您可以直接获取发件人的电子邮件地址。
此外,作为Outlook规则的可能解决方法,您可以考虑处理Application
类的NewMailEx事件,该事件在收件箱中收到新项目时会被触发。
此事件会针对Microsoft Outlook处理的每个已接收项触发一次。该项目可以是多种不同项目类型之一,例如MailItem
,MeetingItem
或SharingItem
。 EntryIDsCollection
字符串包含与该项对应的条目ID。请注意,当EntryIDCollection
包含自上次触发事件以来收件箱中收到的所有项目的逗号分隔条目ID列表时,此行为已从事件的早期版本更改。
当新邮件到达收件箱时以及客户端规则处理发生之前,NewMailEx
事件将触发。您可以使用EntryIDCollection
数组中返回的条目ID来调用NameSpace.GetItemFromID
方法并处理该项。请谨慎使用此方法,以尽量减少对Outlook性能的影响。但是,根据客户端计算机上的设置,在新邮件到达收件箱后,垃圾邮件过滤和将新邮件从收件箱移动到另一个文件夹的客户端规则等过程可能会异步发生。您不应该假设在这些事件发生后,您将始终获得收件箱中项目数量的一项增加。