サポート > リポジトリ > 応用例 > メールヘッダを使ってメールのスレッド表示を実現する

メールのヘッダ情報である Message-ID と In-Reply-To を指定してメールソフトのスレッド表示に対応する方法を紹介します。

このページを読む前に、「メール送信(メールテンプレートを固定する)」に目を通しておいてください。

ここではメッセージIDを「<JasmineSoft主キー番号.送信回数@jasminesoft.co.jp>」とし、返信先として最初のメッセージID(が示すメールアドレス)とする例を紹介します。

図1は、新規登録直後に最初のメールが自動送信された画面です。「メッセージID」「返信先」はそれぞれメールヘッダのMessage-IDとIn-Reply-Toに用いられます。

図1 新規登録直後の自動メール送信で使われたメッセージIDと返信先

続いて一回目の更新を行った直後の自動メール送信を図2に示します。メール送信回数が"2"となり、メッセージIDも".2"となっています。返信先は変わりません。

図2 最初の更新時の自動メール送信で使われたメッセージIDと返信先

さらに二回目の更新を行った直後の自動メール送信を図3に示します。メール送信回数が"3"となり、メッセージIDも".3"となっています。返信先は変わりません。

図3 次の更新時の自動メール送信で使われたメッセージIDと返信先

図1から図3で自動送信されたメールです。メールのスレッド表示に対応していることがわかります。

図4 メールのスレッド表示に対応している

モデルの定義

メール送信機能を設定した顧客モデルの定義を図5に示します。「メール送信回数」「メッセージID」「返信先」という3つの項目がポイントです。

図5 顧客モデルの定義

メール送信の設定

今回はデータの登録時と更新時に自動メール送信を行うようにしています。 メールテンプレートは登録用と更新用に分けて用意するとします。

送信成功時に「メール送信回数」項目をインクリメント(1つ増加)するため、次の式を設定しています。

${mailsend_cnt}=${mailsend_cnt}+1
図6 メール送信設定

メッセージID項目

データの登録時と更新時の自動メール送信にあわせて、次の式を設定します。

CONCATENATE("<JasmineSoft", TOSTR(${customerid}), ".", TOSTR(${mailsend_cnt}), "@jasminesoft.co.jp>")
図7 メッセージIDの式(登録時と更新時に実行される)

CONCATENATE関数は、引数の文字列を結合します。
TOSTR関数は、引数の数値を文字列に変換します。例ではcustomerid項目が数値型のため、TOSTR関数を適用しています。
"JasmineSoft" や "@jasminesoft.co.jp" の文字列は適切に置換してお使いください。

この項目は入力できないよう、読み込み専用とします。

図8 読み込み専用の設定

返信先項目

登録時は空とします。更新の都度、最初のメッセージID (送信回数が 1 の状態)を格納するようにします。

CONCATENATE("<JasmineSoft", TOSTR(${customerid}), ".1@jasminesoft.co.jp>")
図9 返信先の式(登録時は空、更新時のみ実行される)

この項目も入力できないよう、読み込み専用とします。

図10

メールテンプレート

メールテンプレートでは、図11のようにメールヘッダを指定します。

図11 メールヘッダの設定

Message-ID, In-Reply-To の形式は RFC で定められており、不正な形式でメールを送信した場合、メールサーバーやメールクライアントで問題が発生する可能性があります。詳細は下記URLをご参照ください。

RFC 2822 "Internet Message Format"
http://www.ietf.org/rfc/rfc2822.txt