0

我目前正在尝试实施一项服务,该服务使用 EWS 更新用户的 Outlook 联系人,但我在正确写入电子邮件地址字段时遇到了一些麻烦。请注意,我不是 Exchange 开发人员,而且我是 EWS 的新手。

当使用 FindItems() 方法搜索用户的联系人文件夹时,返回的联系人对象将其电子邮件地址字段作为正确的 SMTP 地址 (blah@blah.com)。但是,当我更新并保存联系人时,下一次检索该联系人时,电子邮件地址字段会显示 LegacyDN 地址(/o=Blah/ou=Exchange 管理组/cn=Recipients/cn=Blah)。即使我在更新时将完全相同的 SMTP 地址写入联系人字段,也会发生这种情况。

不知何故,EWS 似乎在内部将 SMTP 地址转换为 ExchangeLDn 地址。由于多种原因,这是有问题的。特别是,它似乎破坏了我们从交换服务器读取的一些其他服务,并且如果不进行非常缓慢的 ResolveName 调用,就无法正确显示电子邮件地址。有没有办法阻止 EWS 这样做?使用 Outlook Redemption 的不同服务在正确写入 SMTP 地址时没有问题,但我们正在尝试停用该服务并使用 Redemption API。我还应该提到,这个问题只发生在为内部用户更新联系人时。外部用户始终写入正确的 SMTP 地址。

谢谢。

4

2 回答 2

1

我的经验表明,在创建/更新联系人期间将 MailboxType 设置为 OneOff可以避免SMTP 到 LegacyDN 的内部地址类型转换:

var address = new EmailAddress
{
    Address = "user@example.com",
    MailboxType = MailboxType.OneOff
};
newContact.EmailAddresses[EmailAddressKey.EmailAddress1] = address;
于 2014-07-02T09:48:37.137 回答
0

您是否尝试设置 EmailAddress 的 MailboxType 属性?

我与内部用户有一些类似的问题,但在我的情况下,我收到了一个异常而不是 LegacyDN。

在我的情况下,将属性设置为 MailboxType.Mailbox 解决了这个问题。

于 2012-07-06T13:03:10.503 回答