下面两个代码之间有区别吗?他们是否达到了同样的目的,或者直言不讳地说,哪一个是更好的选择而不是另一个处理不可预见的情景? 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
。