SenderEmailAddress 属性 不包含内部联系人的标准电子邮件地址
SenderEmailAddress property does not contain a standard email address for internal contacts
背景:
使用 Outlook 规则触发脚本,我希望来自某些 high-visibility 客户的所有电子邮件在收到后立即打开。
我已经成功地设置了一个规则,当那些客户给我发邮件时触发。它看起来像这样:
而且我已经成功创建了一个脚本,可以打开对电子邮件的回复,具体取决于发件人。它看起来像这样:
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
问题:
有没有办法让这个脚本适用于内部 和 外部使用他们的标准电子邮件地址?
实现解决方案的代码:
使用下面德米特里的回答,代码被修改为使用电子邮件地址:
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.PropertyAccessor.GetProperty
阅读 PidTagSenderSmtpAddress
MAPI 属性(DASL 名称 http://schemas.microsoft.com/mapi/proptag/0x5D01001F
)- 查看带有 OutlookSpy (I am its author - click IMessage button) or MFCMAPI 的消息.
背景:
使用 Outlook 规则触发脚本,我希望来自某些 high-visibility 客户的所有电子邮件在收到后立即打开。
我已经成功地设置了一个规则,当那些客户给我发邮件时触发。它看起来像这样:
而且我已经成功创建了一个脚本,可以打开对电子邮件的回复,具体取决于发件人。它看起来像这样:
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
问题:
有没有办法让这个脚本适用于内部 和 外部使用他们的标准电子邮件地址?
实现解决方案的代码:
使用下面德米特里的回答,代码被修改为使用电子邮件地址:
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.PropertyAccessor.GetProperty
阅读 PidTagSenderSmtpAddress
MAPI 属性(DASL 名称 http://schemas.microsoft.com/mapi/proptag/0x5D01001F
)- 查看带有 OutlookSpy (I am its author - click IMessage button) or MFCMAPI 的消息.