0

現在、EWS を使用してユーザーの Outlook 連絡先を更新するサービスを実装しようとしていますが、電子メール アドレス フィールドに正しく書き込むのに少し問題があります。私は Exchange 開発者ではなく、EWS に関しては初心者です。

FindItems() メソッドを使用してユーザーの連絡先フォルダーを検索すると、返された Contact オブジェクトの電子メール アドレス フィールドが正しい SMTP アドレス (blah@blah.com) になります。ただし、連絡先を更新して保存すると、次にその連絡先を取得するときに、電子メール アドレス フィールドに LegacyDN アドレス (/o=Blah/ou=Exchange 管理グループ/cn=Recipients/cn=Blah) が表示されます。これは、更新時に連絡先フィールドにまったく同じ SMTP アドレスを書き込んでも発生します。

どういうわけか、EWS は内部で SMTP アドレスを ExchangeLDn アドレスに変換しているようです。これはいくつかの理由で問題があります。特に、Exchange サーバーから読み取る他のサービスの一部が壊れているようで、非常に遅い ResolveName 呼び出しを行わないと電子メール アドレスを正しく表示できなくなります。EWS がこれを行うのを止める方法はありますか? Outlook Redemption を使用する別のサービスでは、SMTP アドレスを適切に書き込むことに問題はありませんが、そのサービスと Redemption API の使用を廃止しようとしています。また、この問題は内部ユーザーの連絡先を更新するときにのみ発生することにも注意してください。外部ユーザーは、常に正しい SMTP アドレスを書き込みます。

ありがとう。

4

2 に答える 2

1

私の経験では、連絡先の作成/更新中にMailboxTypeOneOffに設定すると、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 に答える