Set objOutlook = CreateObject("Outlook.Application")
Set objActiveExplorer = objOutlook.ActiveExplorer
Set objInboxEmail = objActiveExplorer.Selection(1)
strSender = objInboxEmail.SenderEmailAddress
This returns the smtp address for internet messages but the distinguished
name of exchange users.
I've found code to get the smtp address for a message using CdoPR_EMAIL
value.
Public Const CdoPR_EMAIL = &H39FE001E
Set objSession = CreateObject("MAPI.Session")
objSession.Logon "", "", False, False, 0
' Get first message from inbox
Set objFolder = objSession.Inbox
Set objMessages = objFolder.Messages
Set objMessage = objMessages.GetLast()
' Get address
Set objAddressEntry = objMessage.Sender
strEMailAddress = objAddressEntry.Address
' Check if it is an Exchange object
If Left(strEMailAddress, 3) = "/o=" Then
' Get the SMTP address
strAddressEntryID = objAddressEntry.ID
strEMailAddress =
objSession.GetAddressEntry(strAddressEntryID).Fields(CdoPR_EMAIL).Value
End If
MsgBox strEMailAddress
My problem is that I can't get this to work with the above code. Are the
message items different in each piece of code? How do you access the .Sender
property from objInboxEmail?
Thanks for any help.
--
Ken Slovak
[MVP - Outlook]
http://www.slovaktech.com
Author: Absolute Beginner's Guide to Microsoft Office Outlook 2003
Reminder Manager, Extended Reminders, Attachment Options
http://www.slovaktech.com/products.htm
"Paul Young" <Paul...@discussions.microsoft.com> wrote in message
news:D2E5C13F-61B1-4EFB...@microsoft.com...
Set objMessage = objSession.GetMessage(objInboxEmail.EntryID,
objInboxEmail.Parent.StoreID)
Thirdly, need to use the AddressEntry.Type property (= "EX" for the Exchange
addresses) rather than rely on the "/o=" substring
Fourthly, PR_SMTP_ADDRESS (0x39FE001E) is not available in the cached mode
in Outlook 2003, you need to use PR_EMS_AB_PROXY_ADDRESSES instead
(multivalued string property).
<plug>
in Redemption the code will be as simple as
set sItem = CreateObject("Redemption.SafeMailItem")
sItem.Item = objInboxEmail
if not (sItem.Sender is Nothing) Then
MsgBox sItem.Sender.SMTPAddress
End If
</plug>
Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool
"Paul Young" <Paul...@discussions.microsoft.com> wrote in message
news:D2E5C13F-61B1-4EFB...@microsoft.com...
I've used your suggestions and the following code does now work:
Const PR_EMS_AB_PROXY_ADDRESSES = &H800F101E
Set objOutlook = CreateObject("Outlook.Application")
Set objActiveExplorer = objOutlook.ActiveExplorer
Set objInboxEmail = objActiveExplorer.Selection(1)
Set objSession = CreateObject("MAPI.Session")
objSession.Logon "", "", True, False, 0
strEntryID = objInboxEmail.EntryID
strStoreID = objInboxEmail.Parent.StoreID
Set objCDOMessage = objSession.GetMessage(strEntryID, strStoreID)
Set objAddEntry = objCDOMessage.Sender
If objAddEntry.Type = "EX" Then
Set objField = objAddEntry.Fields(PR_EMS_AB_PROXY_ADDRESSES)
For Each strEmailAddress In objField.Value
If Left(strEmailAddress, 5) = "SMTP:" Then
strAddress = Mid(strEmailAddress, 6)
MsgBox strAddress
Exit For
End If
Next
End If
Problem now is the Outlook security message comes up each time regardless of
the Allow Access for time selected. I know it is normal for it to come up
but normally you can select a time to allow this. Is this a function of the
objSession.Logon? Is there parameters to change this behaviour?
Redemption does seem easier however I would have to roll it out to a few
users first.
Thanks for your help.
Paul
Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool
"Paul Young" <Paul...@discussions.microsoft.com> wrote in message
news:62D25C09-7C41-4EE4...@microsoft.com...