检查senderEmailAddress

时间:2017-03-02 04:28:43

标签: vba outlook outlook-vba outlook-filter

如果从特定电子邮件收到邮件,我在Outlook框中有一个VBA监听器来执行操作。

问题是,如果我收到错误邮件(未送达电子邮件),那么我的条件是在没有该属性的邮件上运行,因此我的方法崩溃了。

我不知道这个主题是什么。

是否有人知道我是否可以测试该属性是否存在,或者是否有其他属性我可以检查以确定我的发件人是否匹配?

非常感谢提前

Sub SetFlagIcon() 

 Dim mpfInbox As Outlook.Folder 

 Dim obj As Outlook.MailItem 

 Dim i As Integer 



 Set mpfInbox = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox).Folders("Test") 

 ' Loop all items in the Inbox\Test Folder 

 For i = 1 To mpfInbox.Items.Count 

 If mpfInbox.Items(i).Class = olMail Then 

 Set obj = mpfInbox.Items.Item(i) 

 If obj.SenderEmailAddress = "someone@example.com" Then 

 'Set the yellow flag icon 

 obj.FlagIcon = olYellowFlagIcon 

 obj.Save 

 End If 

 End If 

 Next 

End Sub

1 个答案:

答案 0 :(得分:4)

Dim obj as a generic Object - 除了 MailItem 之外还有其他对象 在您的收件箱中,也是为了改善您的循环尝试 Items.Restrict Method (Outlook)

Option Explicit
Sub SetFlagIcon()
    Dim mpfInbox As Outlook.Folder
    Dim obj As Object
    Dim Items As Outlook.Items
    Dim i As Long
    Dim Filter As String

    Set mpfInbox = Application.GetNamespace("MAPI").GetDefaultFolder _
                                    (olFolderInbox).Folders("Temp")

    Filter = "[SenderEmailAddress] = 'someone@example.com'"

    Set Items = mpfInbox.Items.Restrict(Filter)

    ' Loop all items in the Inbox\Test Folder
    For i = 1 To Items.Count
        If Items(i).Class = olMail Then
            Set obj = Items(i)
            'Set the yellow flag icon
            obj.FlagIcon = olYellowFlagIcon
            obj.Save
        End If
    Next

End Sub
  

Items.Restrict MethodItems集合应用过滤器,返回一个新集合,其中包含原始中与过滤器匹配的所有项目。