Tôi đã cố gắng sử dụng mailItem.SenderEmailAddress
và mailItem.Sender.Address
nhưng cả hai đều trả về một chuỗi mà trông như thế này:Làm cách nào để có địa chỉ email người gửi bằng Outlook.MailItem trong VB.NET?
/O=DOMAINNAME/OU=EXCHANGE ADMINISTRATIVE GROUP (FYDIBOHI43SPCLT)/CN=RECIPIENTS/CN=JOE BLOGGS8C3
ở đâu trong thực tế tôi muốn [email protected]
được retrurned.
Bất kỳ ai có ý tưởng nào?
Cảm ơn bạn rất nhiều.
Chỉnh sửa: Tôi đã thực hiện một số thao tác; nó hoạt động hoàn hảo cho các địa chỉ email của SMTP SenderEmailType, nó không hoạt động cho các địa chỉ email Exchange.
Chỉnh sửa 2: Tôi đã thử mã được chỉ định here, nhưng tôi cho rằng đã lỗi thời vì nó ném lỗi "Không thể tạo thành phần Active-X".
EDIT 3: Đối với bất cứ ai bao giờ có vấn đề tương tự như tôi, tôi tìm thấy câu trả lời (trong C#, chuyển đổi sang VB.NET, vẫn hoạt động mặc dù):
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
Điều này chỉ hoạt động với Outlook 2010 trở lên, phải không? – BlueMonkMN