PentahoでHTMLメールを送る
今回はPentahoのジョブでHTMLメールを送信する方法についてメモです。ターミノロジーがいまだに理解できていないことに起因する躓きがいろいろありました。
はじめに
まず、いくつか重要な点:
- ジョブ・エントリーとしての「メール」と変換(Transformation)のステップ(Step)として「メール」は別物である(以後、後者を「メールステップ」と呼ぶ)。
- メールステップの設定の多くは先行するステップから引き継いだ入力ストリーム(行セット)のフィールド名(カラム名)を使って行う。
- メールステップそのものには「あるファイルをメール本文として使う」という機能はないようなので「ファイルメモリーロード」(ステップ)を使ってファイル内容をロードして入力ストリーム化する必要がある。
公式リファレンスの記述がいまいち判然としないため、上記はいずれも「試行錯誤の結果わかったこと」です。誤りがあるかもしれません。
構築手順
何はともあれジョブを定義します。といっても今回の主役となるのは変換です。サンプルジョブは単にメール送信を担う変換を実行するだけです。実際の業務で利用するときには、メール送信のための変換の前段処理として、何らかのデータ抽出や加工を行ってそれをもとにメール本文ファイルをつくるようなジョブ・エントリーが配置されるでしょう。
▼ジョブの構成
▼変換の設定
そして変換を定義します。変換を構成するステップは以下のとおり:
- メールのFROMやTO、SMTPサーバに接続するためのメタ情報をロードするための「プロパティーファイル入力」ステップ
- その結果セットを非正規化して1行に直す「行非正規化」ステップ
- メールの本文となるHTMLファイルをロードするための「ファイルメモリーロード」ステップ
- メタ情報と本文情報をマージして1行に直す「マージ結合」ステップ
- これらの情報をもとにメール送信する「メール」ステップ
▼変換の構成
プロパティーファイル入力ステップ
「プロパティーファイル入力」ステップの設定には特筆すべき事項は何もありません。
▼「プロパティーファイル入力」ステップの設定
行非正規化ステップ
「行非正規化」ステップは、前段処理でロードされたプロパティ・ファイルの情報(KeyとValueの2カラムからなる)を入力として、これを非正規化して──イメージとしては反時計回りに90度転倒させて──1行の結果セットを生成します。
▼「行非正規化」ステップの設定
ファイルメモリーロードステップ
一方で、「ファイルメモリーロード」ステップではHTMLメールの本文となるファイルをロードします。「CSV入力」ステップなどは何らかのフォーマットで構造化されたファイルの内容から行(ロー)と列(カラム)を構成する値を読み取って結果セットを生成するのに対して、「ファイルメモリーロード」は対象のファイルの内容まるごとを1つの値として扱って、ファイル内容とファイルサイズなどのメタ情報からなる結果セットを生成します。
▼「ファイルメモリーロード」ステップの設定
マージ結合ステップ
以上のステップで読み込んだデータをマージして1行にします。
▼「マージ結合」ステップの設定
メールステップ
最後に「メール」ステップでメール送信を行います。前述のとおり変換を構成するステップとしての「メール」と、ジョブを構成するジョブ・エントリーとしての「メール」は別物です。したがって設定内容もちがってきます。「メール」ステップの設定の多くは前段のステップから引き継がれた結果セットの情報を使って行われます。これらの設定入力欄には結果セットの列名(カラム名)を指定します。
▼「メール」ステップの設定
以上で設定は終わりです。
ジョブを実行するとプロパティ・ファイルとメール本文ファイルで指定した情報を使ってメール送信が行われます。