送信するバウンスされた電子メールを処理するバッチジョブを変換中です。償還からEWSに切り替えています(Exchange2003からExchange2010にアップグレードしたばかりです)。ご存知のように、返送されたメールにはさまざまな形式があります。次の形式のテストケースを除いて、受け取ったすべてのテストケースの電子メールを処理することができました。
メッセージが意図した受信者の一部またはすべてに届きませんでした。 件名:こんにちは 送信日:2012年4月1日午前8時16分 次の受信者に連絡できません。 hi@foo.com on 4/01/2012 8:19 AM 電子メールシステムはメッセージを配信できませんでしたが、特定の理由を報告しませんでした。アドレスを確認して、再試行してください。それでも失敗する場合は、システム管理者に連絡してください。 smtp.mydomain.com#5.0.0 smtp; 5.3.0-その他のメールシステムの問題554-「配信エラー:ddこのユーザーはfoo.comアカウントを持っていません(hi@foo.com)[-5] --mail.foo.com」(配信試行:0) >>
これがOutlookに表示されるものです。EWSでメールを読んだとき、本文は空です。EWSでメールを受け取ったら、上記の情報を確認する必要があります。電子メールには添付ファイル(元の電子メール)がありますが、Outlookではそのようには見えません。私はEWSから戻ってきたほとんどすべてのプロパティを調べようとしましたが、まだ上記のテキストを見つけることができませんでした。引き換えにより、ReportTextを使用してこの情報を確認できます。私たちが特に探しているのは、電子メールエラー配信コードです。このコードに基づいてさまざまなことを行います。
編集:明確にするために、他のテストケースのBodyプロパティは空ではありません。私は次のようなメールを読み込んでいます:
Dim emailPset = New PropertySet(BasePropertySet.FirstClassProperties)
emailPset.RequestedBodyType = BodyType.Text
Dim f = EmailMessage.Bind(email.Service, email.Id, emailPset)
Update1:調査の結果、PR_NDR_STATUS_CODEフィールドとPR_REPORT_TEXTフィールドのメッセージのRecipientsテーブルを読み取れるようにする必要があるようです。EWSでこれを行う方法があるかどうかまだ検索しています。