次の方法で共有


返信の送信

適用対象: Outlook 2013 | Outlook 2016

クライアント アプリケーションは通常、2 種類の応答をサポートします。1 つは元のメッセージの送信者にのみ送信され、もう 1 つは送信者に加えて元のメッセージの受信者リストに含まれる他のすべての受信者に送信されます。 この 2 番目の種類の応答は、一般に、応答のすべてのメッセージと呼ばれます。

いずれかの種類の返信を送信するには、元のメッセージを送信する場合と同じタスクをいくつか実装します。 たとえば、既定のメッセージ ストアと送信メッセージ フォルダー (通常は送信トレイ) を開き、送信フォルダーの IMAPIFolder::CreateMessage メソッドを呼び出して応答を作成します。 また、元のメッセージ (通常は受信トレイ) を保持するフォルダーを開きます。 別のフォルダーを開く方法については、「 メッセージ ストア フォルダーを開く」を参照してください。

応答の作成と元のメッセージの作成のメイン違いは、返信では、ほとんどのプロパティが元のメッセージのプロパティに基づいているか、直接コピーされるということです。 添付ファイル — メッセージの PR_MESSAGE_ATTACHMENTS (PidTagMessageAttachments) プロパティは、特に除外されます。 返信のすべてのメッセージの受信者リストは、元のメッセージのリストから作成され、受信者は PR_RECEIVED_BY_SEARCH_KEY (PidTagReceivedBySearchKey) プロパティで表され、すべてのブラインド カーボン コピー受信者は削除されます。 PR_RECEIVED_BY_SEARCH_KEY プロパティは、現在のユーザーを表します。

返信を送信するには

  1. 既定のメッセージ ストアを開きます。 詳細については、「 既定のメッセージ ストアを開く」を参照してください。

  2. Outbox フォルダーを開きます。 詳細については、「 メッセージ ストア フォルダーを開く」を参照してください。

  3. 応答を作成するには、Outbox の IMAPIFolder::CreateMessage メソッドを呼び出します。

  4. 元のメッセージの IMAPIProp::CopyTo メソッドを呼び出して、次のプロパティを応答メッセージにコピーします。

  5. IMAPIProp::CopyTo の呼び出しには、次のプロパティを含めないでください。

    プロパティ ...
    PR_CLIENT_SUBMIT_TIME
    PR_MESSAGE_DELIVERY_TIME
    PR_MESSAGE_DOWNLOAD_TIME
    PR_MESSAGE_FLAGS
    レポートのPR_ORIGINATOR_DELIVERY_\REQUESTED
    PR_RCVD_REPRESENTING プロパティ
    PR_READ_RECEIPT_ENTRYID
    PR_READ_RECEIPT_REQUESTED
    PR_RECEIVED_BY プロパティ
    PR_REPLY_RECIPIENT プロパティ
    PR_REPORT_ENTRYID
    PR_SENDER プロパティ
    PR_SENT_REPRESENTING プロパティ
    PR_SENTMAIL_ENTRYID
    PR_SUBJECT_PREFIX

  6. サポートするメッセージ本文プロパティ ( PR_BODY、PR_HTM L、 またはPR_RTF_COMPRESSED) に区切り文字テキスト 追加します。

  7. ScCreateConversationIndex を呼び出し、元のメッセージのPR_CONVERSATION_INDEX (PidTagConversationIndex) プロパティの値を渡します。

  8. 応答のプレフィックスを設定します。 標準の "RE:" を使用している場合は、これらの文字を PR_NORMALIZED_SUBJECT の先頭に連結し、 PR_SUBJECT (PidTagSubject) をこの新しい文字列に設定します。 PR_SUBJECT_PREFIX (PidTagSubjectPrefix) を設定しないでください。 3 文字を超える文字列など、標準以外のプレフィックスを使用している場合は、 PR_SUBJECT_PREFIXに格納します。

  9. PR_SENT_REPRESENTING プロパティを、PR_RCVD_REPRESENTING プロパティの対応する値に設定します。

  10. PR_REPLY_RECIPIENT_ENTRIES (PidTagReplyRecipientEntries) と PR_REPLY_RECIPIENT_NAMES (PidTagReplyRecipientNames) の各エントリを、プライマリ受信者のエントリ識別子と表示名 (型がMAPI_TOの受信者) に設定します。 これらのプロパティは同期したままにしてください。 つまり、 PR_REPLY_RECIPIENT_ENTRIESPR_REPLY_RECIPIENT_NAMES には同じ数のエントリが含まれている必要があります。また、いずれかのプロパティの特定の位置にあるエントリは、他のプロパティ内の同じ位置にあるエントリに対応している必要があります。

  11. 返信が元のメッセージの送信者にのみ送信されている場合は、元のメッセージの PR_SENT_REPRESENTING プロパティで表される受信者を含む 1 つのエントリ受信者リストを作成します。 受信者リストの作成の詳細については、「受信者リスト の作成」を参照してください。

  12. 応答がすべて応答の場合は、次のように受信者リストを作成します。

    1. 元のメッセージの IMessage::GetRecipientTable メソッドを呼び出して、その受信者テーブルにアクセスします。

    2. HrQueryAllRows を呼び出して、テーブル内のすべての行を取得します。 各行がプライマリまたはカーボン コピーの受信者を表していて、リストに残る必要があるかどうか、またはブラインド カーボン コピー受信者またはユーザーを表していて、リストから削除する必要があるかどうかを判断します。

    3. PR_RECIPIENT_TYPE (PidTagRecipientType) 列を見て、受信者の種類を区別します。 この列は、プライマリ受信者のMAPI_TO、カーボン コピー受信者のMAPI_CC、ブラインド カーボン コピー受信者のMAPI_BCCに設定されます。

    4. PR_SEARCH_KEY (PidTagSearchKey) 列を元のメッセージの PR_RECEIVED_BY_SEARCH_KEY プロパティと比較して、行がユーザーを表しているかどうかを判断します。

    5. MAPIFreeBuffer を呼び出して、受信者テーブルの SRowSet 構造体の対応するエントリに関連付けられているメモリを解放することで、受信者リストから不要な行を削除します。 プロパティ値配列内のすべての値を 0 に設定し、すべての cValues メンバーを 0 に、SRowSet 内の各 SRow 構造体内のすべての lpProps メンバーを NULL に設定します。

    6. 元のメッセージのPR_SENT_REPRESENTING_NAME (PidTagSentRepresentingName) プロパティと PR_SENT_REPRESENTING_ENTRYID (PidTagSentRepresentingEntryId) プロパティで表されるように、送信者を受信者リストに追加します。 送信者がリスト内で重複していないかどうかを確認します。

    7. 応答メッセージの IMessage::ModifyRecipients メソッドを呼び出し、 ulFlags パラメーターを 0 に設定して、元のメッセージのリストに基づいて、返信または転送されたメッセージの新しい受信者リストを作成します。

  13. 返信の IMAPIProp::SaveChanges メソッドを呼び出してメッセージを保存するか 、IMessage::SubmitMessage を呼び出して保存して送信します。

注:

IMessage::ModifyRecipients を呼び出して受信者リストに変更を格納する前に、ユーザーがメッセージ フォームを使用して変更を加えることを許可できます。 ユーザーは、リストに追加したり、特定のメンバーを削除したりできます。 ユーザーが受信者リストに変更を加えることを許可することは、オプションのクライアント機能です。