Outlook VBA被已读回执破坏

Outlook VBA被已读回执破坏,vba,outlook,Vba,Outlook,我有一个在传入消息上运行的代码。它会删除附件,然后将电子邮件转发到其他地址。它被读过的收据打破了,因为我想它们不算邮件 Private Sub Application_NewMailEx(ByVal EntryIDCollection As String) Dim varEntryID As Variant For Each varEntryID In Split(EntryIDCollection, ",") Dim objOriginalItem As MailItem S

我有一个在传入消息上运行的代码。它会删除附件,然后将电子邮件转发到其他地址。它被读过的收据打破了,因为我想它们不算邮件

Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
Dim varEntryID As Variant

For Each varEntryID In Split(EntryIDCollection, ",")
    Dim objOriginalItem As MailItem
    Set objOriginalItem = Application.GetNamespace("MAPI").GetItemFromID(varEntryID)
    Dim objForwardedItem As MailItem
    Set objForwardedItem = objOriginalItem.Forward

    Do Until objForwardedItem.Attachments.Count = 0
        objForwardedItem.Attachments.Remove (1)
    Loop

    objForwardedItem.DeleteAfterSubmit = True
    objForwardedItem.To = "LoanPostClosing@domain.com"
    objForwardedItem.Send
Next
End Sub

您需要将新项视为泛型对象并检查类属性。见下文

Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
Dim varEntryID As Variant

For Each varEntryID In Split(EntryIDCollection, ",")
    Dim objOriginalItem As Object
    Set objOriginalItem = Application.GetNamespace("MAPI").GetItemFromID(varEntryID)
    if objOriginalItem.Class = 43 Then
      Dim objForwardedItem As MailItem
      Set objForwardedItem = objOriginalItem.Forward

      Do Until objForwardedItem.Attachments.Count = 0
          objForwardedItem.Attachments.Remove (1)
      Loop

      objForwardedItem.DeleteAfterSubmit = True
      objForwardedItem.To = "LoanPostClosing@yourcnb.com"
      objForwardedItem.Send
   End If
Next
End Sub

我原以为这会起作用,但由于某种原因,它总是因为一个错误而停止。它在代码末尾突出显示下一个,并在没有For的情况下说Next。有什么想法吗?我只是用你提交的代码作为答案。当我看到它是一团糟,我只是暂时恢复到代码在我的问题,但它仍然中断阅读收据。上面的代码编译正好适合我。不过,你的代码是什么?