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