Сценарий Outlook, который запускается при получении электронной почты, работает только тогда, когда я пересылаю новую почту себе - PullRequest
0 голосов
/ 20 сентября 2018

Я сделал код, который будет принимать входящее письмо в определенной папке (сначала создается правило для перемещения почты в папку, а затем запускается скрипт).

Проблема в том, чтоправило работает (оно перемещает почту в папку), но скрипт не работает.

Дело в том, что когда я беру новую почту и передаю ее себе (моя электронная почта также находится в получателях)в правилах), скрипт работает правильно.

Вот начало кода, который, я считаю, может быть неправильным.

Sub Script(item As Outlook.MailItem) 


Dim strMailID As String
Dim objMail As Outlook.MailItem
Dim objNamespace As Outlook.NameSpace

strMailID = item.EntryID
Set objNamespace = Application.GetNamespace("MAPI")
Set objMail = objNamespace.GetItemFromID(strMailID)
Dim objpf As MAPIFolder

If objMail.MessageClass = "IPM.Note" Then

Любая помощь будет оценена

1 Ответ

0 голосов
/ 21 сентября 2018

Вам необходимо добавить прослушиватель событий в локальную папку «Входящие» по умолчанию, это работало с Outlook 2016.

Этот код добавит прослушиватель событий в локальную папку «Входящие» по умолчанию.Действие будет размещено на входящих электронных письмах.Вам необходимо добавить необходимые действия в приведенном ниже коде:

                Private WithEvents Items As Outlook.Items 
                Private Sub Application_Startup() 
                Dim olApp As Outlook.Application 
                Dim objNS As Outlook.NameSpace 
                Set olApp = Outlook.Application 
                Set objNS = olApp.GetNamespace("MAPI") 
                ' default local Inbox
                Set Items = objNS.GetDefaultFolder(olFolderInbox).Items 
                End Sub
                Private Sub Items_ItemAdd(ByVal item As Object) 

                On Error Goto ErrorHandler 
                 Dim Msg As Outlook.MailItem 
                 If TypeName(item) = "MailItem" Then
                Set Msg = item 
                ' ******************
                ' do something here
                ' ******************
                End If
                ProgramExit: 
                  Exit Sub
                ErrorHandler: 
                MsgBox Err.Number & " - " & Err.Description 
                Resume ProgramExit 
                End Sub

После вставки кода в модуль ThisOutlookSession необходимо перезапустить Outlook.

...