나는 mailItem.SenderEmailAddress
및 mailItem.Sender.Address
를 사용하여 시도했지만 둘은 다음과 같습니다 문자열 반환 : VB.NET에서 Outlook.MailItem을 사용하여 보낸 사람 전자 메일 주소를 얻으려면 어떻게해야합니까?
/O=DOMAINNAME/OU=EXCHANGE ADMINISTRATIVE GROUP (FYDIBOHI43SPCLT)/CN=RECIPIENTS/CN=JOE BLOGGS8C3
[email protected]
이 retrurned 싶지합니다.
누구든지 아이디어가 있습니까?
대단히 감사합니다.
편집 : 일부 파고를했습니다. 'SenderEmailType'SMTP의 전자 메일 주소에 완벽하게 작동하지만 Exchange 전자 메일 주소에서는 작동하지 않습니다.
편집 2 : here 코드를 시도했지만 "Active-X 구성 요소를 만들 수 없습니다."라는 오류가 발생하여 구형이라고 가정합니다.
편집 3 : 지금 나와 같은 문제가있는 사람들을위한 , 내가 대답을 발견 (C#으로 VB.NET로 변환, 여전히하지만 작동) :
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
이 기능은 Outlook 2010 이상에서만 작동합니다. 맞습니까? – BlueMonkMN