Прямо сейчас ваш код делает это:
Создание письма, отправка его.
Попытка ответить на объект mailitem, который уже отправлен.
Вам нужно перехватить событие, чтобы перехватить почту при получении самостоятельно. (при условии, что вы ответите всем и удалите некоторых получателей для отчета 2)
Вот как вы выполните sh this:
Сначала создайте WithEvents как элементы, вызывая AllMyItems, затем перехват в AllMyItems_ItemAdd, а затем инициализировать событие, когда Outlook запускается с помощью Application_Startup (встроенное событие)
Будьте очень осторожны при определении критериев для переадресации / действия элемента входящей почты, так как этот код события будет просканируйте каждое письмо, отправленное на ваш главный почтовый ящик, и оцените его. Если вы хотите еще больше снизить риск пересылки почтового элемента не тому человеку, рассмотрите возможность использования правила outlook для сортировки его в пользовательскую папку, а затем задайте местоположение этой папки в виде строки Set AllMyItems = вместо папки по умолчанию
Option Explicit
'for the Default DL inbox
Private WithEvents AllMyItems As Items
Private Sub Application_Startup()
Dim olapp As Outlook.Application
Dim objNS As Outlook.NameSpace
Set olapp = Outlook.Application
Set objNS = olapp.GetNamespace("MAPI")
'Set myolitems = objNS.GetDefaultFolder(olFolderInbox).Items
'all my items in the main box
Set AllMyItems = objNS.GetDefaultFolder(olFolderInbox).Items
Set olapp = Nothing
Set objNS = Nothing
End Sub
Private Sub AllMyItems_ItemAdd(ByVal Item As Object)
On Error Resume Next
If TypeName(Item) <> "Mailitem" Then
If TypeName(Item) = "ReportItem" Then GoTo 0 'undeliverables shows as a report item
If TypeName(Item) = "MeetingItem" Then GoTo 0
Dim oItem As MailItem
Dim myForward As MailItem
Set oItem = Item
'use the next line to check for a property of the incoming mail, that distinguishes it from other mail, since this event will run on every mail item
If InStr(1, oItem.Subject, "Your public folder is almost full", vbTextCompare) > 0 Then
Set myForward = oItem.Forward
myForward.Recipients.Add "derp@derpinacorp.com"
myForward.Importance = olImportanceHigh
'MsgBox "uno momento"
myForward.Send
Else
End If
Else
End If
0:
End Sub