メールを送信する

最終更新日: 2024年6月3日
R8 | R9

MailMessageマネージャを利用する

MailMessageManager とは、メール送信を行うユーティリティクラスです。これをスクリプトから使うことができます。

var replaceMap = new java.util.HashMap();
replaceMap.put("${message}", "Hello Wagby");
var mailman = p.appctx.getBean("MailMessageManager");
mailman.send("model1_update", replaceMap, errorManager, "Execute Script ", p);
  • 1行目の replaceMap は Java 標準クラス java.util.HashMap のインスタンスです。メールテンプレートに用意されたプレースホルダを置換するためのルールを設定します。キー部分がプレースホルダ名で、値部分が(プレースホルダを置換する)値になります。
  • 2行目でプレースホルダの値を設定しています。
  • 3行目で MailMessageManager オブジェクトを取得しています。
  • 4行目でメール送信を行っています。send メソッドの引数を以下に説明します。
  • 上の例では用いていませんが、mailman.send の戻り値は boolean 型です。メール送信に成功した場合はtrueを返します。失敗した場合はfalesを返します。

MailMessageManager の send メソッドの引数

引数 説明
1 メールテンプレート識別子を指定します。
2 スクリプト中に用意したプレースホルダの置換マップを指定します。
3 エラーメッセージを扱うオブジェクトです。スクリプト中で暗黙に利用できます。このとおりに指定してください。
4 エラー発生時にログファイルに情報が出力されますが、そのときのログファイルのメッセージの先頭に埋め込まれる文字列(ログヘッダ)です。ログファイルを検索するときに用いることができます。任意の文字列を指定してください。ログファイルを見やすくするため、末尾に空白を一つ加えるとよいです。
5 pはスクリプト中で暗黙に利用できる特別なオブジェクトです。このとおりに指定してください。

MailMessageManager の戻り値

メール送信が成功した場合はtrueが返ります。失敗した場合はfalseが返ります。

ファイルを添付する

contact モデルにファイル型項目 attachment が用意されていたとき、マップに次のように二つの値を格納します。前者はファイル名で、後者が実際のファイル(のパス)に相当します。

var replaceMap = new java.util.HashMap();
replaceMap.put("${contact_p.attachment}", contact.attachment);
replaceMap.put("${contact_p.attachment_jshfilename}", contact.attachmentJshfilename);
var mailman = p.appctx.getBean("MailMessageManager");
mailman.send("contactpattern1", replaceMap, errorManager, "Execute Script ", p);

メールテンプレート(上の例では "contactpattern1")で、「添付ファイル」欄に ${contact_p.attachment}を設定します。

ReplaceMapHelperクラスを利用する

上の例では replaceMap に直接、値をセットしていました。Wagbyが標準で用意する ReplaceMapHelper を使うことで、対象モデルのすべての項目を自動的にセットすることができます。これを使うと Designer によるメール送信設定と同等のことをスクリプトで記述できます。

コントローラのスクリプト「登録 > 登録の実行」タイミングで、CUSTOMER モデルのメール送信を行なう例を示します。(事前のメールテンプレート "orderCUSTOMER" を準備済み、とします。)

var PHelper = p.appctx.getBean("CUSTOMERPHelper");
var replaceMapHelper = p.appctx.getBean("CUSTOMERReplaceMapHelper");
var mailman = p.appctx.getBean("MailMessageManager");
var CUSTOMER = p.request.getAttribute("CUSTOMER");
var CUSTOMER_p = PHelper.s2p(CUSTOMER, 
    p, 
    Packages.jp.jasminesoft.wagby.app.CUSTOMER.CUSTOMERPHelper.SHOW);
var replaceMap = replaceMapHelper.get(CUSTOMER_p, p)
mailman.send("orderCUSTOMER", replaceMap, errorManager, "Execute Script ", p);