MailFlute
MailFluteとは?
MailFlute は、メールテンプレート機能を備えたシンプルなメール送信ライブラリです。
DBFlute の FreeGen と組み合わせて利用することで、タイプセーフでメールパラメーターを指定できる、堅いツールになります。 DBFluteライクなメール送信ライブラリと言えるでしょう。
- 1. メールテンプレートを書く
- パラメータコメント形式でテンプレートを作成、拡張子は.dfmail
- 2. FreGenを叩く
- FreeGenがメールテンプレートを読み込んで、クラスを自動生成
- 3. タイプセーフ実装
- 自動生成されたクラスを使って、タイプセーフにメール送信の実装
LastaFluteでの利用例
LastaFluteとの組み合わせが、MailFlute利用の典型例となります。
まず、src/main/resources/mail配下に、dfmailのメールテンプレートを書きます。 外だしSQLに非常によく似たパラメータコメント形式 (pmfile形式) で書きます。
e.g. 新しい会員の登録を想定したメールテンプレート @welcome_member.dfmail
/*
[New Member's Registration]
The member will be formalized after click.
*/
subject: Welcome to your sign up, /*pmb.memberName*/
>>>
Hello, /*pmb.memberName*/
How are you?
/*IF pmb.birthdate != null*/
Happy birthdate! Today is /*pmb.birthdate*/.
/*END*/
Thanks
そして、FreeGenを叩き...
e.g. Manageで 12 (freegen) を叩く @Command
...$ sh manage.sh 12
mylasta.mail配下に自動生成されたクラスで実装します。 クラス名は、テンプレートファイルをキャメルケースにしたものになります。(welcome_member.dfmail なら WelcomeMemberPostcard)
e.g. 自動生成されたクラスで実装 @Java
WelcomeMemberPostcard.droppedInto(postbox, postcard -> {
postcard.setFrom("from@example.com", LABELS_OFFICE_MAIL);
postcard.addTo("to@example.com");
postcard.setMemberName("sea");
postcard.setBirthdate(birthdate);
postcard.addReplyTo("replyto@example.com");
});
メールテンプレート
拡張子は .dfmail で、パラメーターコメント形式で書きます。
Body Meta
コメントや subject など、メールBodyのメタ情報 (Body Meta) を >>> 区切りで定義します。
- *HeaderComment
- ヘッダー部に書かれたメールに関する開発用コメント、タイトルと説明がある
- *Title
- メールを一行で要約する開発用コメント、[...]形式で書く
- *Description
- メールを自由に説明する開発用コメント、Titleの下に書く
- *subject:
- メールの件名、文言の中で動的パラメーターが利用できる
- option:
- メールのオプション、HTMLメールも飛ばすなら option: +html
- -- !![type] abc!!
- 自動判別できないプロパティを明示的宣言をして自動生成
e.g. Body Meta の属性が勢ぞろい @welcome_member.dfmail
/*
[New Member's Registration]
The member will be formalized after click.
*/
subject: Welcome to your sign up, /*pmb.memberName*/
option: +html
-- !!List<Integer> abcList!!
>>>
Hello, /*pmb.memberName*/
...
ヘッダーコメント (タイトル、説明)
Title や Description は必須です。メールテンプレートには必ずタイトルと説明を入れます。 形式も決まっています。必ず /* [タイトル] 説明 */ という形式でないと、FreeGenも実行時もエラーで落ちます。
e.g. ヘッダーコメントの形式 @dfmail
/*
[タイトル]
説明
*/
subject: ...
...
タイトルと説明は、あくまで開発用コメントで、実装に送信されるメールの件名(subject)とは別です。
subject: (メールの件名)
さて、こちらは実際にメールされて受信者が目にするメールの件名です。
件名の中でも、パラメータコメントを使うことができます。
e.g. 件名の中で、パラメータコメント @dfmail
/*
[タイトル]
説明
*/
subject: Hello, /*pmb.memberName*/. How are you?
...
option: (メールのオプション)
- option: +html
- HTMLメールも飛ばすときに、Plainテキスト側のテンプレートの option: に指定します。
- もし、Plainテキストのテンプレートファイルの welcome_member.dfmail だとしたら、HTMLメールのテンプレートファイルは、同じディレクトリに welcome_member_html.dfmail となります。
- HTMLメールのテンプレートファイルには、ヘッダーを付与できません。(一行目から本文を書きます)
e.g. HTMLメールのテンプレートファイルの置き場所 @Directory
src/main/resources
|-mail
| |-member
| | |-welcome_member_html.dfmail // HTML text
| | |-welcome_member.dfmail // plain text
...
パラメータコメント
TODO jflute
Postcard, PostOffice
TODO jflute
PostalPersonnel
TODO jflute