I want to organize messages in folders by domain (and possibly user). I have a script but it can\'t get the SMTP addresses from exchange users. The below code is an excerpt from
I have a work-around that seems decently efficient.
Const PR_TRANSPORT_MESSAGE_HEADERS = "http://schemas.microsoft.com/mapi/proptag/0x007D001E"
a = Split(obj.PropertyAccessor.GetProperty(PR_TRANSPORT_MESSAGE_HEADERS), vbCrLf)
For i = 0 To UBound(a)
If InStr(1, a(i), "From:", vbTextCompare) = 1 Then
MsgBox Replace(Split(a(i), "<")(1), ">", "")
End If
Next
This pulls the SMTP address directly from the header and does not care what type of message it is.
There still has to be a better way though...
MailItem.Sender.GetExchnageUser().ProimarySmtpAddress
should work fine for the EX senders, but your code checks the SenderEmailAddress
property instead of SenderEmailType
. Change it to
If obj.SenderEmailType = "EX" Then
You can also check the PR_SENT_REPRESENTING_SMTP_ADDRESS property (DASL name http://schemas.microsoft.com/mapi/proptag/0x5D02001F
, use MailItem.PropertyAccessor.GetProperty
) before using the MailItem.Sender property (which is more expensive)