Ins*_*ast 4 vba outlook-vba outlook-2010
背景:
使用Outlook规则触发脚本,我希望收到来自某些高可见性客户端的所有电子邮件后立即打开.
我已成功设置一条规则,当这些客户端向我发送电子邮件时会触发该规则 它看起来像这样:
我已经成功创建了一个脚本,可以打开对电子邮件的回复,具体取决于发送者是谁.它看起来像这样:
Sub OpenEmailImmediately(oEmail As Outlook.MailItem)
Select Case oEmail.Sender
Case "Jobs, Steve"
oEmail.Reply.Display
End Select
End Sub
Run Code Online (Sandbox Code Playgroud)
虽然这有效,但我已经使用.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
Run Code Online (Sandbox Code Playgroud)
这是"EX"类型的完全有效地址(与SMTP相对) - 检查MailItem.SenderEmailType属性的值.如果是"SMTP",请使用MailItem.SenderEmailAddress.如果是"EX",请使用MailItem.Sender.GetExchangeUser().PrimarySmtpAddress.