未配信メッセージの再送信

適用対象: Outlook 2013 | Outlook 2016

トランスポート プロバイダーは、送信したメッセージを正常に配信できない場合に、配信不能レポート (NDR) を送信します。 ユーザーがこれらの配信不能メッセージの再送信を試みることができるかどうかは、クライアント次第です。 メッセージの再送信をサポートする場合は、MAPI によって提供されるフォームを使用するか、独自のフォームを実装できます。 MAPI フォームには、失敗した受信者の名前と配信エラーの理由 (可能な場合) が表示され、選択するとユーザーがメッセージを再送信できるボタンが含まれます。

再送信メッセージを受信すると、元のメッセージとまったく同じになります。 受信者は、最初の送信試行時に配信されたメッセージと、それ以降の試行で配信されたメッセージを区別できません。 このメッセージに対する応答は、メッセージが初めて正常に送信された場合とまったく同じように機能する必要があります。

配信不能メッセージを再送信するには

  1. IMAPIFolder::CreateMessage を呼び出して、新しいメッセージを作成します。

  2. PR_MESSAGE_RECIPIENTS (PidTagMessageRecipients) プロパティと、PR_SENDER プロパティと PR_SENT_REPRESENTING プロパティを除く、元のメッセージからすべてのプロパティコピーします。 次のプロパティを変更します。

    • PR_MESSAGE_CLASS (PidTagMessageClass) をレポートのPR_ORIG_MESSAGE_CLASS (PidTagOriginalMessageClass) プロパティに設定します。

    • PR_MESSAGE_FLAGS (PidTagMessageFlags) プロパティでMSGFLAG_RESEND フラグを設定します。

    • PR_ORIGINAL_ENTRYID (PidTagOriginalEntryId) を元のメッセージのPR_ENTRYID (PidTagEntryId) プロパティに設定します。

    • 受信者ごとに、PR_RECIPIENT_TYPE (PidTagRecipientType) プロパティでMAPI_SUBMITTEDを設定します。

    • 失敗した各受信者を複製します。 重複した受信者の PR_RECIPIENT_TYPE プロパティを MAPI_P1 に変更します。 そのため、失敗した受信者ごとに、受信者テーブルに 2 つのエントリが存在するようになりました。1 つは PR_RECIPIENT_TYPE 元の値に設定され、もう 1 つは PR_RECIPIENT_TYPE MAPI_P1 に設定されています。

  3. ScCreateConversationIndex を呼び出して、必要に応じて会話の追跡を設定します。

  4. 新しいメッセージの IMessage::ModifyRecipients メソッドを呼び出して、受信者リストを更新します。

  5. IMessage::SubmitMessage を呼び出して、新しいメッセージを保存して送信します。