背景:
使用 Outlook 规则触发脚本,我希望来自某些高可见度客户的所有电子邮件在收到后立即打开。
我已经成功设置了一条规则,当这些客户向我发送电子邮件时就会触发该规则。它看起来像这样:
我已经成功创建了一个脚本,可以打开电子邮件的回复,具体取决于发件人。它看起来像这样:
Sub OpenEmailImmediately(oEmail As Outlook.MailItem)
Select Case oEmail.Sender
Case "Jobs, Steve"
oEmail.Reply.Display
End Select
End Sub
虽然这有效,但我已经使用 .Sender
实现了它属性(property)。
问题:
我更愿意使用发件人的电子邮件地址(与我收到的每封电子邮件相关的唯一值)来实现此目的。不幸的是,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
最佳答案
这是一个完全有效的“EX”类型地址(与 SMTP 相对) - 检查 MailItem.SenderEmailType
属性的值。如果是“SMTP”,请使用MailItem.SenderEmailAddress
。如果是“EX”,请使用 MailItem.Sender.GetExchangeUser().PrimarySmtpAddress
。
您还可以尝试使用 MailItem 读取
- 查看带有 OutlookSpy 的消息(我是它的作者 - 单击 IMessage 按钮)或 MFCMAPI .PidTagSenderSmtpAddress
MAPI 属性(DASL 名称 http://schemas.microsoft.com/mapi/proptag/0x5D01001F
) .PropertyAccessor.GetProperty
关于vba - SenderEmailAddress 属性不包含内部联系人的标准电子邮件地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36900156/