mailItem.SenderEmailAddress
andを使用してみmailItem.Sender.Address
ましたが、どちらも次のような文字列を返します。
/O=DOMAINNAME/OU=EXCHANGE ADMINISTRATIVE GROUP (FYDIBOHI43SPCLT)/CN=RECIPIENTS/CN=JOE BLOGGS8C3
本当はどこにjoebloggs@domainname.co.uk
帰されたいのか。
誰にもアイデアはありますか?
どうもありがとうございました。
編集:私は掘り下げました。「SenderEmailType」SMTP の電子メール アドレスには完全に機能しますが、Exchange 電子メール アドレスには機能しません。
編集 2:ここで指定されたコードを試してみましたが、「Active-X コンポーネントを作成できません」というエラーがスローされるため、古いと思います。
EDIT 3: 私と同じ問題を抱えている人のために、答えを見つけました(VB.NETに変換されたC#では、まだ動作します):
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