Ho provato con mailItem.SenderEmailAddress
e mailItem.Sender.Address
ma entrambi restituire una stringa che assomiglia a questo:Come posso ottenere l'indirizzo email del mittente utilizzando Outlook.MailItem in VB.NET?
/O=DOMAINNAME/OU=EXCHANGE ADMINISTRATIVE GROUP (FYDIBOHI43SPCLT)/CN=RECIPIENTS/CN=JOE BLOGGS8C3
Dove in realtà voglio [email protected]
da retrurned.
Qualcuno ha qualche idea?
Grazie mille.
Modifica: ho fatto un po 'di scavo; funziona perfettamente per gli indirizzi di posta elettronica del SMTP 'SenderEmailType', ma non funziona per gli indirizzi di posta elettronica di Exchange.
Modifica 2: Ho provato il codice specificato here, ma presumo che sia obsoleto perché genera un errore "Impossibile creare il componente Active-X".
EDIT 3: Per chi mai ha lo stesso problema come me, ho trovato la risposta (in C#, convertito in VB.NET, funziona ancora però):
Private Function GetSenderSMTPAddress(mail As Outlook.MailItem) As String
Dim PR_SMTP_ADDRESS As String = "http://schemas.microsoft.com/mapi/proptag/0x39FE001E"
If mail Is Nothing Then
Throw New ArgumentNullException()
End If
If mail.SenderEmailType = "EX" Then
Dim sender As Outlook.AddressEntry = mail.Sender
If sender IsNot Nothing Then
'Now we have an AddressEntry representing the Sender
If sender.AddressEntryUserType = Outlook.OlAddressEntryUserType.olExchangeUserAddressEntry OrElse sender.AddressEntryUserType = Outlook.OlAddressEntryUserType.olExchangeRemoteUserAddressEntry Then
'Use the ExchangeUser object PrimarySMTPAddress
Dim exchUser As Outlook.ExchangeUser = sender.GetExchangeUser()
If exchUser IsNot Nothing Then
Return exchUser.PrimarySmtpAddress
Else
Return Nothing
End If
Else
Return TryCast(sender.PropertyAccessor.GetProperty(PR_SMTP_ADDRESS), String)
End If
Else
Return Nothing
End If
Else
Return mail.SenderEmailAddress
End If
End Function
Questo funziona solo con Outlook 2010 o successivo, giusto? – BlueMonkMN