比较两个VBA代码以获取mailitem的SMTP地址

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了比较两个VBA代码以获取mailitem的SMTP地址相关的知识,希望对你有一定的参考价值。

下面两个代码之间有区别吗?他们是否达到了同样的目的,或者直言不讳地说,哪一个是更好的选择而不是另一个处理不可预见的情景? objMail是Outlook Exchange Server上的MailItem对象。

您的意见将不胜感激。

[#1]

Dim Sender_email As String
    Sender_email = vbNullString

If objMail.SenderEmailType = "EX" Then
    Sender_email = objMail.Sender.GetExchangeUser.PrimarySmtpAddress
Else
    Sender_email = objMail.SenderEmailAddress
End If

[#2]

Const PR_SMTP_ADDRESS As String = "http://schemas.microsoft.com/mapi/proptag/0x39FE001E"
Dim Sender_PA As Outlook.PropertyAccessor
Set Sender_PA = objMail.Sender.PropertyAccessor 
Dim Sender_email As String
    Sender_email = vbNullString

If objMail.SenderEmailType = "EX" Then
    Sender_email = Sender_PA.GetProperty(PR_SMTP_ADDRESS)
Else
    Sender_email = objMail.SenderEmailAddress
End If
答案

[#1]是优选的 - 触摸objMail.Sender是昂贵的,你应该避免,如果你ucan。 #2还假设PR_SMTP_ADDRESS始终可用。一般情况下,情况并非如此,您可能还想查看PR_EMS_AB_PROXY_ADDRESSES

以上是关于比较两个VBA代码以获取mailitem的SMTP地址的主要内容,如果未能解决你的问题,请参考以下文章

VBA Outlook Mailitem - 不显示所有项目

为啥编码标头内容类型:text/html;在 Outlook 插件中使用 MailItem 时缺少 GMAIL 的 SMTP 服务器:SMTP.GMAIL.COM?

将项目作为MailItem处理

Exchange电子邮件是否始终在标头中包含SMTP地址?

Excel VBA:输入key和value两个单元格区域,以value的值比较排序,然后返回key的排序

Excel VBA:输入key和value两个单元格区域,以value的值比较排序,然后返回key的排序