SenderEmailAddress属性不包含内部联系人的标准电子邮件地址

时间:2016-04-27 20:23:47

标签: vba outlook-vba outlook-2010

背景

使用Outlook规则触发脚本,我希望收到某些高可见性客户端的所有电子邮件后立即打开。

我已成功设置一条规则,当这些客户端向我发送电子邮件时会触发该规则。它看起来像这样:

emails from Jobs and Wozniak

我已经成功创建了一个脚本,可以打开对电子邮件的回复,具体取决于发送者是谁。它看起来像这样:

Sub OpenEmailImmediately(oEmail As Outlook.MailItem)

    Select Case oEmail.Sender
        Case "Jobs, Steve"
            oEmail.Reply.Display
    End Select

End Sub

虽然这有效,但我已使用.Sender属性实现了它。

问题:

更喜欢使用发件人的电子邮件地址(与我收到的每封电子邮件相关联的唯一值)来实现此功能。不幸的是,我希望包含电子邮件地址的oEmail.SenderEmailAddress 仅适用于外部客户

在排除故障时,我发现我希望oEmail.SenderEmailAddress的值与此类似:

  

steve.jobs@apple.com

对于内部电子邮件,它的值与此类似:

  

/ O = APPLE / CN = RECIPIENTS / CN = JOBSS6738

问题:

有没有办法让这个脚本能够使用标准电子邮件地址为内部外部工作?

已实施解决方案的代码:

使用下面的Dmitry答案,代码已修改为使用电子邮件地址:

Sub OpenEmailImmediately(oEmail As Outlook.MailItem)

    If oEmail.SenderEmailType = "EX" Then
        Select Case oEmail.Sender.GetExchangeUser().PrimarySmtpAddress
            Case "steve.jobs@apple.com"
                oEmail.Reply.Display
        End Select
    Else
        Select Case oEmail.SenderEmailAddress
            Case "tom.brady@patriots.com"
                oEmail.Reply.Display
        End Select
    End If

End Sub

1 个答案:

答案 0 :(得分:7)

这是“EX”类型的完全有效地址(与SMTP相对) - 检查MailItem.SenderEmailType属性的值。如果是“SMTP”,请使用MailItem.SenderEmailAddress。如果是“EX”,请使用MailItem.Sender.GetExchangeUser().PrimarySmtpAddress