Ich habe versucht, mailItem.SenderEmailAddress
und mailItem.Sender.Address
verwenden, aber sie beide zurückgeben eine Zeichenfolge, die wie folgt aussieht:Wie kann ich die Absender-E-Mail-Adresse mit Outlook.MailItem in VB.NET erhalten?
/O=DOMAINNAME/OU=EXCHANGE ADMINISTRATIVE GROUP (FYDIBOHI43SPCLT)/CN=RECIPIENTS/CN=JOE BLOGGS8C3
Wo in Wirklichkeit Ich will [email protected]
retrurned werden.
Wer hat irgendwelche Ideen?
Vielen Dank.
Edit: Ich habe etwas graben; Es funktioniert perfekt für E-Mail-Adressen des 'SMTP-SMTP-Absenders', es funktioniert einfach nicht für Exchange-E-Mail-Adressen.
Edit 2: Ich habe versucht, den angegebenen Code here, aber ich nehme an, es ist veraltet, weil es einen Fehler "Kann Active-X-Komponente nicht erstellen" -Fehler.
EDIT 3: Für alle, die immer das gleiche Problem hat wie ich, ich die Antwort gefunden (in C#, VB.NET umgewandelt, noch funktioniert aber):
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
Dies funktioniert nur mit Outlook 2010 oder später, oder? – BlueMonkMN