メール送信(メールテンプレートを固定する)

最終更新日: 2023年1月23日
R8 | R9

定義方法

メール送信の設定は、次の手順で行います。

  1. Designerによるボタン設定とビルド。
  2. (ビルドした)Wagbyアプリケーションで行う「メールテンプレート」の設定

ここでは、それぞれの手順の詳細を説明します。

Designerの設定

「メール>送信」タブを開きます。画面機能毎のタイミングでメール送信の設定を行うことができます。 ここでは顧客データの「登録時」に営業部全員へ自動メール配信を行う例を説明します。

設定項目 説明 入力例
メールを送信する このチェックを有効にするとメール送信機能が動作します。 (チェック)
送信のタイミング "処理完了時" または "メール送信ボタン" を選択できます。処理完了時は自動メール配信です。メール送信ボタンを用意すると、ボタンを押したときにメールを送信します。一般的には登録・更新・削除といった動作を伴う場合は "処理完了時" を、詳細画面では "メール送信ボタン" を選択します。 処理完了時
メール送信ボタン 送信のタイミングが "メール送信ボタン" のとき、ボタン名に設定した名前でメール送信用のボタンが配置されます。 (チェック)
メールテンプレート項目 後述する「メールテンプレート」の識別子(ID)になります。重複しない名前を英数字の組み合わせで決めてください。 announceForSalesTeam
メール送信後に
メッセージを表示する
メール送信が成功または失敗したというメッセージを画面に表示します。
送信条件 メール送信の条件を指定することができます。条件に合致しなければ、メールは送信されません。[詳細...] ${status}==1
成功時のアクション メール送信が成功した場合に実行する式を指定できます。[詳細...] ${count}=${count}+1
失敗時のアクション メール送信が失敗した場合に実行する式を指定できます。[詳細...] ${status}=-1
登録時の自動メール送信の設定

ワンポイント

・メール送信は主に「登録時」「更新時」「詳細表示時」で利用されます。
・「削除時」はデータが削除されることが前提であるため、成功時のアクション・失敗時のアクションを設定できる欄が用意されていません。
・「一覧表示時」「ダウンロード時」は処理件数や処理者に関する情報のみ扱うことができます。(プレースホルダの説明をお読みください)

メールテンプレート

ビルドしたアプリケーションにシステム管理者でログオンします。図1に設定したメールテンプレートの詳細な設定を行います。メールテンプレートの新規登録を行います。(図2)

メールテンプレートの新規登録

メールテンプレートの設定画面です。(図3,図4)

「適用モデル」で「顧客」を選択します。 「メールサーバ」「件名」「差出人」などを設定します。「説明」は必ず入力してください。各項目にはプレースホルダを指定することもできます。

基本設定

メール送信に関する基本設定です。

設定項目 必須 説明 入力例
ID 図1に設定したメールテンプレート項目の値を指定します。この値がキーとなり、図1の値と紐付けられます。 (図1の設定値と同じ)
適用モデル区分 通常は "ユーザー" を選択します。 ユーザー
適用モデル このメール送信を行うモデルを指定します。[詳細...] 顧客
説明 このメールテンプレートの目的や性質(送信タイミング)、宛先等の情報を明記します。 (自由文章)
件名 送信するメールの題名を記述します。文字列内にプレースホルダを含めることもできます。 ${customer_p.name}様へのご案内
差出人 送信元のメールアドレスを指定します。文字列内にプレースホルダを含めることもできます。 info
${customer_p.createusermail}
宛先人 送信先のメールアドレスを指定します。文字列内にプレースホルダを含めることもできます。 sales
${customer_p.email}
宛先人に個別送信 後述する「宛先人を複数指定した場合」をお読みください。 (未設定時は個別送信しない)
Cc カーボンコピーのメールアドレスを指定します。文字列内にプレースホルダを含めることもできます。 -
Bcc ブラインドカーボンコピーのメールアドレスを指定します。文字列内にプレースホルダを含めることもできます。 -
添付ファイル プレースホルダを用いて添付ファイルに該当するモデル項目名を指定します。この項目に登録されたファイルを添付ファイルとして扱います。 ${customer_p.filename}
最大添付ファイル数 繰り返しコンテナ内の項目を添付ファイルとして利用すると複数の添付ファイルを指定できますが、この値を設定することで最大添付ファイル数の制限をかけることができます。 10
本文形式 テキストメール,HTMLメールといった指定を行うことができます。この指定方法に応じて、具体的に入力できる本文が選択されます。メール本文は、本指定を行うと下部のテキストエリアに適切な入力欄が有効になりますので、そこに記載してください。(本文中にプレースホルダを含めることができます。) テキストのみ
メールテンプレートの設定画面(1)
メールテンプレートの設定画面(2)

サーバ > SMTP

送信を行う (SMTP) サーバに関する設定です。GmailやOffice365などのサンプルは「メールサーバのサンプル」をお読みください。

設定項目 説明 入力例
メールサーバ メールサーバを指定します。省略時は「環境>メール>メール設定(共通)>メールホスト名」の値を用います。メールサーバ名の後に「:(コロン)」を付加し、任意のポート番号を指定することもできます。 mailserver.YOURCOMPANYNAME.co.jp
mailserver.YOURCOMPANYNAME.co.jp:587
smtp.gmail.com
プロトコル メールサーバが対応するプロトコルを選択します。SMTP, SMTP over SSL, SMTP STARTTLS が用意されています。どのプロトコルを利用するかは貴社メールサーバ管理者へお問い合わせください。 SMTP
SMTP認証利用 メールサーバがSMTP認証を利用するかどうかを選択します。未選択時は「利用しない」となります。詳細は貴社メールサーバ管理者へお問い合わせください。 (未選択)
認証アカウント SMTP認証を利用する場合に入力します。
認証パスワード SMTP認証を利用する場合に入力します。
メールテンプレートの設定画面(3)

サーバ > POP before SMTP

POP before SMTP 認証を行う場合に設定します。(この認証方式を使わない場合、本設定欄は空白としてください。)

設定項目 説明 入力例
認証サーバ POP before SMTP 認証に用いる POP3 サーバのホスト名を指定します。ここにホスト名が記載された場合、POP before SMTP 認証を使うようになります。
サーバ名のあとにコロン区切りでポート番号を指定することもできます。
pop.YOURCOMPANYNAME.co.jp
プロトコル "POP3" または "POP3 over SSL" のいずれかを指定します。省略時は "POP3" です。 (未選択)
APOP認証 APOPを利用するかどうかを指定します。省略時は "利用しない" です。 (未選択)
認証アカウント POP3サーバの認証を行うアカウントを指定します。
認証パスワード POP3サーバの認証を行うアカウントのパスワードを指定します。
メールテンプレートの設定画面(4)

プレースホルダ

メールテンプレートでは、メールサーバ、件名、差出人、宛先人、本文へ特別な置き換え文字表記(プレースホルダ)を指定することで、対象となるモデルの値を埋め込むことができるようになっています。

プレースホルダの書式の詳細は「帳票>プレースホルダ」をお読みください。(一部、未対応の書式もあります。)

権限設定との関係

項目に隠し権限を設定している場合、権限がなければプレースホルダも空文字を返します。

繰り返し項目を用いる

繰り返し項目を「宛先人」「Cc」「Bcc」に指定することができます。複数人にメールを送信することができます。書式は次のとおりです。

${モデル名_p.項目名.#}

繰り返しコンテナの項目を用いる

「宛先人」「Cc」「Bcc」への適用

繰り返しコンテナの項目を「宛先人」「Cc」「Bcc」に指定することができます。複数人にメールを送信することができます。書式は次のとおりです。

${モデル名_p.繰り返しコンテナ名.#.メールアドレス項目名}

繰り返し項目、繰り返しコンテナ項目のサンプルを示します。

出力結果(宛先)
${customer_p.receiver.#} taro@jasminesoft.co.jp ,
jiro@jasminesoft2.co.jp ,
hanako@jasminesoft3.co.jp
${customer_p.report.#.email} taro@jasminesoft.co.jp,
jiro@jasminesoft2.co.jp,
hanako@jasminesoft3.co.jp
${customer_p.report.#.name} <${customer_p.report.#.email}> ジャスミン太郎 <taro@jasminesoft.co.jp>,
ジャスミン次郎 <jiro@jasminesoft2.co.jp>,
ジャスミン花子 <hanako@jasminesoft3.co.jp>

本文への適用

繰り返しコンテナの項目を「本文」に指定することができます。書式は次のとおりです。

${モデル名_p.繰り返しコンテナ名.#.項目名}

繰り返し項目、繰り返しコンテナ項目のサンプルを示します。繰り返される部分を1行で(改行なしで)記述してください。

変更履歴
No 日付時間 ユーザID 内容
${customer_p.changelog.#.cid} ${customer_p.changelog.#.cdate} ${customer_p.changelog.#.cuserid} ${customer_p.changelog.#.ccontent}

メールテンプレートの本文をHTML形式とすると、HTMLのテーブルとして出力することができます。上記と同様に、繰り返す部分は1行で記述してください。

<p>変更履歴</p>
<table border="1" width="100%">
<tr><th>No</th><th>日付時間</th><th>ユーザID</th><th>内容</th></tr>
<tr><td>${customer_p.changelog.#.cid}</td><td>${customer_p.changelog.#.cdate}</td><td>${customer_p.changelog.#.cuserid}</td><td><textarea rows="5" cols="80">${customer_p.changelog.#.ccontent}</textarea></td></tr>
</table>

一覧表示、ダウンロード画面で利用できるプレースホルダ

一覧表示、ダウンロード画面ではデータそのものではなく、次の情報を扱います。

表記 説明
${resultsize} 一覧表示の場合は検索結果数を、ダウンロードの場合はダウンロード処理を行なったあとでカウントされた行数になります。
${username} ログオンしているユーザアカウント名です。
${createdate} この処理を行なった日時です。yyyy-MM-dd HH:mm:ss 形式になります。
${createdatestr} この処理を行なった日時です。yyyyMMddHHmmss 形式になります。

例 (1) 処理完了時の自動送信

顧客の新規登録を行います。(図7)

顧客の新規登録画面

新規登録が正常に行われたタイミングで、メールが自動送信されます。(図8)

新規登録完了とメールの自動送信

例 (2) メール送信ボタンによる手動送信

メール送信設定で、送信のタイミングを「メール送信ボタン」とすることができます。主に詳細表示画面に用意します。

メール送信ボタン押下のメール送信設定

詳細画面では図10のようにメール送信ボタンが用意されます。

メール送信ボタン

図9で「メール送信後にメッセージを表示する」を有効にすると、メール送信後に図10のようにメッセージが表示されます。

メール送信成功のメッセージ

宛先人の詳細

宛先人を複数指定した場合

宛先人を複数指定した場合、受信したメールでは「manager01@xxx.yyy.zzz,manager02@xxx.yyy.zzz,manager03@xxx.yyy.zzz」などと、すべての宛先が見えてしまいます。他の宛先を見えないように送信する(それぞれの宛先に個別に送信する)場合には「宛先人に個別送信」の設定を有効にします。

「宛先人に個別送信」を指定し、かつ宛先人にプレースホルダを適用した場合、データベースから宛先情報を読み込みます。 ここで宛先がゼロの場合、メール送信は行われません。必ず送信できるアドレスを一つ加えることで、この動作を抑制することができます。

宛先人に日本語を含める

「差出人」「宛先人」「CC」「Bcc」には日本語を含むこともできます。
(例)「Wagby応援隊supporter@wagby.com」など

プレースホルダで指定することもできます。

${staff_p.lastupdateuser} <${staff_p.lastupdateusermail}>

送信ルール

宛先指定時の送信ルールは以下の通りです。

  • To は必須です。Cc、Bcc は任意です。
  • To、Cc、Bcc いずれかに不正なメールアドレス記述があれば、送信されません。
  • To、Cc、Bcc に重複があった場合、重複分は除かれます。同じメールアドレスに複数のメールが送信されることはありません。

ファイルを添付する

ファイル名型の項目を添付することができます。通常のファイル名型の項目だけでなく、繰り返しコンテナ内のファイル名型にも対応しています。

具体的にはプレースホルダ形式で指定します。書式は次のとおりです。

${モデル名_p.項目名}
${モデル名_p.コンテナ名.#.項目名}

例を示します。

${report_p.attachfile}
${report_p.container.#.attachfile}

最大添付ファイル数

「最大添付ファイル数」を指定することができます。添付ファイル数がこの数値を超えるとエラーとなり、メールは送信されません。

(「最大添付ファイル数」が空欄の場合、添付ファイル数のチェックは行われません。)

メールヘッダの設定

任意のメールヘッダを設定することができます。

メールヘッダの設定

メールヘッダを使って、メールソフトのスレッド表示を実現する

"メールヘッダを使ってメールのスレッド表示を実現する"をお読みください。

メールサーバとプロトコルの詳細

メールサーバ

Wagby 本体はメールサーバの機能をもっていません。Wagby のメール送信は、ブラウザが動作しているクライアントではなく、Wagby アプリケーションが動作しているサーバから、設定時に指定したメールサーバを使って送信されます。メールが送られないという場合、Wagby アプリケーションを稼働しているサーバから指定したメールサーバへ正しく通信ができるかを確認してください。

プロトコル

Wagby が対応しているメール送信のプロトコルは「SMTP」および「SMTPS (SMTP over SSL)」です。SMTP 認証にも対応しています。

メールサーバに Gmail を用いる場合、プロトコルにSMTPSを指定し、SMTP認証の設定を行う必要があります。

SMTP認証は、"LOGIN" と "PLAIN" 方式に対応しています。("CRAM-MD5", "DIGEST-MD5", "NTLM" といった方式には対応していません。)

ボタン名と表示条件

メール送信ボタンの「ボタン名」ならびに「表示条件」を指定できます。

設定の詳細は「画面機能>ボタン名と表示条件のカスタマイズ」を参考にしてください。

メール送信ボタンと表示条件

成功時、失敗時の処理

メール送信が成功した場合、または失敗した場合に実行する式を指定できます。
成功時、失敗時の式は代入形式となります。代入のためのイコールが必要です。

メール送信時に「送信数」という項目をインクリメントする場合は次のように記述します。

${mailsend_cnt}=${mailsend_cnt}+1

式はセミコロンで区切って複数、記述することができます。

${mailsend_cnt}=${mailsend_cnt}+1;${status}=IF(${mailsend_cnt}==0,"Zero","Non-Zero")

記述の制約

  • 式に関数を用いることはできますが、SUMやCOUNTといった集合関数は利用できません。
  • モデル参照項目に対して #content 指定を行うことができません。#id のみ利用できます。
  • ダウンロードと一覧表示機能でのメール送信は、モデルの項目を条件に使うことはできません。メールのプレースホルダは「件数」のみが利用できます。モデル項目を使わない式として、例えば HASPRINCIPAL("プリンシパル名") といった権限による制御などは行えます。

モデル定義の制約

  • 成功時、失敗時の処理を記述した場合、このモデルの更新画面を作成する必要があります。
  • 変更履歴を残す設定を行ったモデルには、成功時/失敗時の処理を記述できません。(この制約は将来のWagbyで改善する予定です。)

送信条件

メール送信の条件を指定することができます。条件に合致しなければ、メールは送信されません。

モデル項目「ステータス」が "1" のときメールを送信するという場合は次のように記載します。条件判定式のため、イコールは二つ必要です。

${status}==1

「成功時のアクション」と組み合わせることで、メール送信成功時にフラグを立て、そのフラグが立っている場合は二度目以降の送信は行えないといった制御を行うことができます。

記述の制約

「成功時、失敗時の処理」と同じです。

リトライ回数と間隔を指定する

標準では、メール送信に失敗したときのリトライは行われません。次の手順で、リトライの回数と間隔を指定することができます。

  1. customize/resources フォルダに myMimeMailUtilities.properties.UTF8 ファイルを新しく用意します。
  2. 次のエントリを追加します。
    jfc.retry.interval=10000
    jfc.max.retry.count=10
    
    パラメータ jfc.retry.interval はリトライの間隔を示します。単位はミリ秒です。
    パラメータ jfc.max.retry.count はリトライを含めた送信回数を示します。この例では10回となっており、初回のメール送信処理に失敗すると最大9回のリトライ処理を行います。(メールの送信に成功した時点でリトライ処理は終了します。)
  3. このファイルを保存し、ビルド処理を行います。

ワンポイント

my が接頭語に付与されたリソーフファイルはビルド時に結合されます。詳細は"Wagby Developer Network(R9) > Javaを用いたカスタマイズ > リソースファイル"をお読みください。

ワンポイント

この設定はすべてのメール送信に適用されます。

ログにCcとBccアドレスを含める

標準では、メール送信のログ(成功および失敗)に記録される送信先は To で指定したアドレスのみとなっています。 次の手順で、Cc および Bcc アドレスもログに記録させることができます。

  1. customize/resources フォルダに myMimeMailUtilities.properties.UTF8 ファイルを新しく用意します。
  2. 次のエントリを追加します。
    jfc.log.cc=true
    jfc.log.bcc=true
    
    パラメータ jfc.log.cc および jfc.log.bcc はそれぞれ Cc、Bcc のアドレスをログに記録するかどうかを指定します。いずれか、または両方を同時に指定できます。
  3. このファイルを保存し、ビルド処理を行います。

ワンポイント

my が接頭語に付与されたリソーフファイルはビルド時に結合されます。詳細は"Wagby Developer Network(R9) > Javaを用いたカスタマイズ > リソースファイル"をお読みください。

ワンポイント

この設定はすべてのメール送信に適用されます。

送信前に確認ダイアログを出す9.2.0

メール送信ボタンクリック時に、確認ダイアログを表示することができます。メッセージ内容は自由に設定できます。

メール送信の確認ダイアログ

定義方法

「メール > 送信 > メール送信ボタン > 確認ダイアログのメッセージ」にメッセージ内容を入力します。

登録・更新・詳細表示時にそれぞれ設定ができます。

確認ダイアログのメッセージ

トラブルシューティング

スタックトレースを確認する

メール送信時、何らかのエラーが生じたのでスタックトレースを確認したいという場合、WEB-INF/classes/log4j2.xml に次の行を追記して下さい。

<Logger name="jp.jasminesoft.jfc.app.SendMailProcessor" level="DEBUG">
  <AppenderRef ref="C"/>
  <AppenderRef ref="F"/>
</Logger>

com.sun.mail.smtp.SMTPSendFailedException : Invalid sender address エラー

メールテンプレートで指定した「差出人」が、サーバー送信時のアカウントと同じになっているかどうか、確認してください。メールサーバ側で、不一致の場合はエラーとするという設定になっている可能性があります。

適用モデルの選択肢に、目的のモデルが表示されない

適用モデルの選択肢はシステムモデル "jfcmodel" を用いています。この情報が古い場合、目的のモデルが表示されません。対応方法...

仕様・制約

  • 指定したアドレスに誤りがありメールが届かなかった場合、ログファイルに送信失敗が記録されます。

不正なメールアドレスについて

メールアドレスは RFC822 構文に準拠する必要があります。

例えば次のようなメールアドレスは不正とみなされます。(これがすべてではありませんが、参考までに。)

  • 存在しないメールアドレス
  • メールアドレスとして許されていない記号が入っている。かっこ、セミコロン(;)、コロン(:) など。
  • アットマーク(@)が複数入っている。yamada@taro@com など。
  • ピリオドが二つ以上連続している。yamada..taro@example.com など。
  • メールのローカル部(名前部分)がピリオド(.)で終わっている。yamada.taro.@example.com など。