1

我想将所有收到的并​​非来自我公司域(例如 JohnDeer@tractorworld.com)且主题字段中没有我公司名称的电子邮件移至垃圾邮件文件夹。

这是我到目前为止所拥有的,但在几百次迭代后它给了我一个类型不匹配的错误:

Sub SpamHunter()
    Dim inBox As Folder
    Set inBox = Session.GetDefaultFolder(olFolderInbox)
    MsgBox ("Items Found: " & inBox.Items.count)
    Dim mailItem As mailItem
    Dim b As Long
    Dim mailAddress As String
    Dim mailSubject As String
    Dim mailReceived As Date
    Dim c As Integer
    c = 0

    For Each mailItem In inBox.Items

        c = c + 1

        mailAddress = mailItem.SenderEmailAddress
        mailSubject = mailItem.Subject
        mailReceived = mailItem.ReceivedTime

        b = InStr(mailAddress, "mycompany")
        b = b + InStr(mailAddress, "myothercompany")

        If b < 1 Then
            mailItem.Move (Session.GetDefaultFolder(olFolderInbox).Folders("_Junk"))
        End If


    Next

End Sub
4

1 回答 1

1

并非收件箱中的所有内容都是MailItem. 例如,会议请求不是MailItem.

在将其转换为该类型之前,您需要检查该项目是否为 mailitem。

Dim o as Object
Dim ixItems as Integer
For ixItems = inBox.Items.Count To 1 Step -1
   Set o = inBox.Items.Item(ixItems)
   if TypeName(o) = "MailItem" Then
       Set mailItem = o
       ' loop goes here

        c = c + 1

        mailAddress = mailItem.SenderEmailAddress
        mailSubject = mailItem.Subject
        mailReceived = mailItem.ReceivedTime

        b = InStr(mailAddress, "mycompany")
        b = b + InStr(mailAddress, "myothercompany")

        If b < 1 Then
            mailItem.Move (Session.GetDefaultFolder(olFolderInbox).Folders("_Junk"))
        End If

   End If
Next

另外,提示:不要让变量名与类型名冲突。我建议调用您的变量oMailItem或类似变量,因此很明显它是变量而不是类型。

于 2013-09-12T08:39:33.793 回答