Как получить адрес электронной почты отправителя? - PullRequest
1 голос
/ 28 февраля 2020

Я хочу, чтобы Outlook выполнил действие по электронной почте с определенного адреса электронной почты.

В ThisOutlookSession у меня есть:

Private Sub Application_NewMail() 'This triggers when a new email is recieved
    Call TestSub
End Sub

В моем модуле:

Public Sub TestSub()
    Dim Msg                 As Outlook.MailItem
    Dim FromEmailAddress    As String

    FromEmailAddress = Msg.SenderEmailAddress

    If FromEmailAddress = "Test@example.com" Then
        MsgBox ("Hello")
    End If

End Sub

Я получаю

Ошибка времени выполнения '91':
Переменная объекта или переменная блока не установлена ​​

on FromEmailAddress = Msg.SenderEmailAddress.

Я перепробовал много вариантов моего кода и исчерпал возможности Google.

Ответы [ 2 ]

1 голос
/ 29 февраля 2020

Также полезно проверить, является ли Отправитель SMTP или GetExchangeUser

        Dim Email_Address As String

        If Item.SenderEmailType = "SMTP" Then
            Email_Address = Item.SenderEmailAddress
        Else
            If Item.SenderEmailType = "EX" Then
                Email_Address = Item.Sender.GetExchangeUser.PrimarySmtpAddress
            End If
        End If
1 голос
/ 28 февраля 2020

Вы можете использовать следующий код:

Dim oInbox    As Outlook.Folder
Dim oItem     As Object
Dim Msg       As MailItem

Set oInbox = ActiveExplorer.Session.DefaultStore.GetRootFolder().Folders("Inbox")
For Each oItem In oInbox.Items
    If TypeOf oItem Is MailItem Then
        Set Msg = oItem
        FromEmailAddress = Msg.SenderEmailAddress
    Else
        Debug.Print "Skipping " & TypeName(oItem)
    End If
Next
...