vb.net - 我如何使用 Exchange 网络服务获取真实的电子邮件地址?

标签 vb.net exchangewebservices

我正在尝试使用 Exchange 网络服务获取电子邮件发件人的真实电子邮件地址,但是 mailitem.Sender.Address 包含类似 -

/O=EXCHANGELABS/OU=EXCHANGE 管理组 (................)/CN=RECIPIENTS/CN=................-.. ...

我怎样才能得到这封电子邮件发件人的真实电子邮件地址?

我的代码:

Dim sf As SearchFilter = New SearchFilter.SearchFilterCollection(LogicalOperator.And, New SearchFilter.IsEqualTo(EmailMessageSchema.IsRead, False))
Dim findResults As FindItemsResults(Of Item) = service.FindItems(WellKnownFolderName.Inbox, sf, New ItemView(128))
Dim items As ServiceResponseCollection(Of GetItemResponse) = service.BindToItems(findResults.Select(Function(item) item.Id), New PropertySet(BasePropertySet.FirstClassProperties, EmailMessageSchema.From, EmailMessageSchema.ToRecipients))

For Each itItem As Microsoft.Exchange.WebServices.Data.Item In findResults.Items
      If TypeOf itItem Is EmailMessage Then
            Dim mailItem As EmailMessage = DirectCast(itItem, EmailMessage)

然后我想引用 mailItem.Sender.Address,其中包含上述字符串而不是 abc@whatever.com

一些示例代码,最好是在 VB.NET 中,我将不胜感激,因为我很难弄清楚这些 Exchange Web 服务是如何工作的。

最佳答案

我想回答我自己的问题:

Dim instances As NameResolutionCollection
instances = service.ResolveName(mailItem.Sender.Address)
If instances.Count > 0 Then
    ResolveName = instances(0).Mailbox.Address
Else
    ResolveName = ""
End If

... 其中“服务”是一个 ExchangeService 对象,而 mailItem.Sender.Address 包含一个 X500 地址(我想这就是它的名称)。 mailItem.Sender.Address 将包含一个 X500 类型的地址,如果发件人是您组织的实习生,正如 Jan Doggen 指出的那样。


我可能会建议更改为以下内容:

If instances.Count > 0 Then
    ResolveName = instances(0).Mailbox.Address
Else
    ResolveName = i.Sender.Address
End If

通过这样做,如果电子邮件来自外部来源,ResolveName 将保留原始发件人电子邮件地址。

关于vb.net - 我如何使用 Exchange 网络服务获取真实的电子邮件地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22193757/

相关文章:

java - 如何使用 Java EWS API 搜索 iCalUid 的 Exchange 约会?

c# - Echange 托管 API : How do I select a category for an appointment

c# - c# 中 ReDimStatement 的等价物是什么?

vb.net - VB.NET SQLite 查询中的 StackOverflow

email - 使用 EWS API 发送电子邮件时控制消息编码

c# - 获取 session 组织者邮件地址 EWS API

c# - EWS 获取主重复预约中的所有事件

vb.net - 原始图像尺寸

vb.net - HttpRequest.ServerVariables 与 HttpRequest.UserAgent 属性 VB.net

c# - 什么是NullReferenceException,如何解决?