メール送信ブロックの使い方
「ジョブ」ブロック群から「モデル〜のデータでメールを送信する」ブロックを選択します。
メール送信ブロックには次の設定が必要です。
設定欄 | 説明 |
メールテンプレートID |
どのメールテンプレートIDを使うか、を指定します。実際にメール送信ジョブを行う前に、このIDをもった「メールテンプレート」を事前に準備しておいてください。メールテンプレートIDを決める手順は「システムの管理>メールテンプレート」をお読みください。 |
起動条件 |
条件に合致した場合のみメール送信を行うという制御ができます。 |
成功時のアクション |
メール送信に成功した場合の処理を記述できます。対象データの値を変更することができます。また、複数のブロックを並べることもできます。 |
失敗時のアクション |
メール送信に失敗した場合の処理を記述できます。対象データの値を変更することができます。また、複数のブロックを並べることもできます。 |
待ち時間 (ms) |
最大送信回数の分だけメールを送信後、次のメール送信処理を再開するまでの待ち時間を指定します。単位はミリ秒です。3000と指定すると3秒待ちます。未指定時は待たない(連続送信)となります。 |
最大送信回数 |
一度に送るメールの数を指定します。送信回数が指定した数を超えた場合、上記「待ち時間」だけ処理を中断したあと、送信処理を再開します。未指定時は制限なし、となります。 |
ワンポイント
このブロックは指定したモデルのすべてのデータを対象にします。例えば1万件のデータがあった場合、1万回処理されます。
このように1件ずつデータを処理するブロックを「スクローラ (Scroller)」と呼ぶことがあります。スクローラは一度の大量のメモリを消費しないように設計されています。
ワンポイント
一度に大量のメールを送信しようとすると、メールサーバが「スパムメール」と判断し、送信処理を強制的に停止することがあります。
「最大送信回数」と「待ち時間」を適切に設定することで、スパムメール判定を回避できる場合があります。
「メール送信日時」変数を用意したブロックと、メール送信ブロックをつなげます。つなげることで順番に実行されるようになります。(この例では初めに変数を用意し、次にメール送信ブロックを実行するようになります。)
メール送信対象モデルを「顧客」と指定します。
メール送信ブロックの、その他のパラメータを設定していきます。
メールテンプレートIDの指定
今回はメールテンプレートIDを固定値 "magazine" としています。
はじめに「文字列」ブロック群から、固定文字列を示すブロックを選択し、ワークスペースに配置します。
固定文字列を表現するブロックを配置します。
"magazine" と指定します。
成功時のアクション
メール送信が成功した時に行う処理を記述できます。未設定の場合は、何もしません。
今回はメール送信が成功したら「メール送信結果」を "1" (成功) としつつ「最終メール送信日時」に現在時刻をセットしてみましょう。
はじめに「文」ブロック群から「〜に〜をセット」ブロックを選択します。
「成功時のアクション」に配置します。
「顧客」モデルの「メール送信結果」項目に、数値の "1" をセットするブロックを配置します。
同じように「顧客」モデルの「最終メール送信日時」項目に、変数「メール送信日時」をセットするブロックを配置します。
失敗時のアクション
メール送信が失敗した時に行う処理を記述できます。未設定の場合は、何もしません。
今回はメール送信に失敗したら「メール送信結果」を "2" (失敗) とします。
待ち時間
ここでは固定値として、数値 "3000" をセットします。(3000ミリ秒、すなわち3秒、となります。)
最大送信回数
ここでは固定値として、数値 "3" をセットします。上の「待ち時間」の設定と組み合わせて、3通送信するごとに3秒待つ、という動作になります。
起動条件
起動条件は「条件判断ブロック群」の、判断ブロックを使います。
起動条件に配置してみました。条件自体は空白のままとなっています。(これから設定していきます。)
はじめに「顧客のメール送信可・不可項目の値が "1" なら」という起動条件をブロックで表現してみます。
モデル群のブロックから「顧客」を選びます。
対象項目を「メール送信可・不可」とします。
条件を満たす値 "1" を設定します。
複雑な条件を設定する
次に「顧客のメール送信可・不可項目の値が "1" で、かつ、最終メール送信日時が空(まだ送信したことがない)」という起動条件に変えてみましょう。
条件判断ブロック群から「〜かつ〜」という接続用のブロックを選びます。
いったんワークスペースに仮配置します。
最初に設定した起動条件ブロックを、今回の接続ブロックの左側に再配置します。
もう一つの条件「最終メール送信日時が空」をブロックで表現します。「空」を判定する関数 ISBLANK は文字列版と日付版があります。今回は日付版を使います。
接続ブロックの右側に配置します。
ワークスペースを縮小表示した例です。
さらに「最後にお送りしてから7日を超えている」という条件も含めてみます。条件判断ブロック群から、同じ接続ブロックを使いますが、今度は「または」を使います。
「または」を示す接続ブロックに、ISBLANKの条件ブロックを再配置します。
もう一つの条件「〜を超えている」を表現するブロックを配置します。
条件「>」を指定します。
二つの日付の差を取得するWagby関数DATEDIF
を使います。
7日、を表現するため、数値ブロック群から固定数値を表現するブロックを配置します。
二つの日付を数字として比較できるよう、Wagby関数TODATE
を使います。
DATEDIF関数の最初に「最終メール送信日時(を数字で表現した値)」をセットします。
現在日付は変数でもっていました。これもTODATE関数で数値にします。
DATEDIF関数の二番目に配置します。全体が「または」という条件で接続されています。これによって「一度もメール送信したことがない、または、最後にお送りしてから7日を超えている」を表現できました。
全体を見渡すため、ワークスペースの表示をもう一段階、縮小表示させてみます。
すべての条件を結合したブロックとします。
最後に、この条件ブロックをメール送信の「起動条件」にセットします。
保存
作成したスクリプトを保存します。 これでジョブの準備が完了しました。
ジョブを実行する
実行時間を指定することができます。または「今すぐ実行」を行うこともできます。