VBScript - 检查mailItem是否仍然可行

时间:2017-10-13 11:56:14

标签: vbscript mailitem

我的一个脚本遇到了问题。 该脚本自动化我们的共享邮箱(outlook)。它会自动将邮件分配给正确的人。

每次脚本运行时,它都会循环文件夹中的所有邮件,并检查它是否有类别。如果没有,它会将其分配给正确的用户。 问题是,当一个没有类别的邮件在运行脚本时被拖到另一个文件夹时,它会在尝试执行mail.Categories时抛出错误。

  

线:222   错误:由于错误8004010f无法完成操作。

有没有办法检查mailItem是否仍然可行?

我尝试使用IsEmpty,但msgbox不会触发。

Set outlook = CreateObject("Outlook.Application")
Set namespace = outlook.GetNameSpace("MAPI")

Set Account = namespace.Folders("accountName")
Set Inbox = argentaAccount.Folders("Inbox")

For Each mail in Inbox.Items

    If IsEmpty(mail) Then
        MsgBox("test")
    End If

    'check if item has a category'
    If mail.Categories <> "" Then
        'has a category'
    Else
        'Execute mailhandling code'
    End If
Next

如果有人有任何解决方案,我将永远感激。

1 个答案:

答案 0 :(得分:0)

用这条线作为线索:

If IsEmpty(mail) Then

VBScript可能与VBA相同,其中For Each的工作方式如下:

For i = 1 to Inbox.Items.Count

当移动(或删除)项目1时,项目2移动到位置1.在下一个循环中,处理位置2和项目3。每跳过一秒。在循环的后半部分,没有什么可以处理的。

在VBA中处理此问题的一种方法是按相反顺序执行:

For i = Inbox.Items.Count to 1 step -1
    Set mail = Inbox.Items(i)
    If mail.Categories <> ""