Package nablarch.common.mail
Class MailSender
- All Implemented Interfaces:
DataReaderFactory<SqlRow>
,Handler<SqlRow,
,Result> ExecutionHandlerCallback<CommandLine,
,Result> TransactionEventCallback<SqlRow>
メール送信要求管理テーブル上の各レコードごとにメール送信を行うバッチアクション。
- Author:
- Shinsuke Yoshio
-
Nested Class Summary
Nested classes/interfaces inherited from interface nablarch.fw.TransactionEventCallback
TransactionEventCallback.Provider<TData>
-
Field Summary
Fields inherited from interface nablarch.fw.TransactionEventCallback
REQUEST_DATA_REQUEST_SCOPE_KEY
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected void
addBodyContent
(jakarta.mail.internet.MimeMessage mimeMessage, MailRequestTable.MailRequest mailRequest, List<? extends MailAttachedFileTable.MailAttachedFile> attachedFiles, ExecutionContext context) 指定されたMimeMessage
にメールメッセージ本文(添付ファイル含む)を追加する。protected void
containsInvalidCharacter
(String target, String mailRequestId) メールヘッダ・インジェクションチェック
チェック対象文字列に\rもしくは\nを含んでいるかのチェック。protected jakarta.mail.internet.MimeMessage
createMimeMessage
(SqlRow data, String mailRequestId, MailRequestTable.MailRequest mailRequest, jakarta.mail.Session session, MailRecipientTable mailRecipientTable) メールデータを作成する。このタスクの入力データを読み込むデータリーダを生成して返す。handle
(SqlRow data, ExecutionContext context) メール送信要求を元にメールを送信する。protected Result
handleException
(SqlRow data, ExecutionContext context, MailRequestTable.MailRequest mailRequest, MailConfig mailConfig, Exception e) メール送信時の例外のハンドル処理を行う。protected void
updateToFailed
(SqlRow data, ExecutionContext context) 処理ステータスを異常終了に更新する。protected void
updateToSuccess
(SqlRow data, ExecutionContext context) 処理ステータスを正常終了に更新する。protected void
writeCreateMailFailedLog
(SqlRow data, MailRequestTable.MailRequest mailRequest, MailConfig mailConfig, jakarta.mail.MessagingException e) メール作成が失敗した場合に、障害検知ログに出力する。protected void
writeSendMailFailedLog
(SqlRow data, MailRequestTable.MailRequest mailRequest, MailConfig mailConfig, jakarta.mail.SendFailedException e) メール送信失敗時のSendFailedException
例外の障害検知ログに出力する。Methods inherited from class nablarch.fw.action.BatchActionBase
error, errorInExecution, initialize, postExecution, preExecution, terminate, transactionAbnormalEnd, transactionFailure, transactionNormalEnd, transactionSuccess, writeErrorLog, writeFatalLog, writeLog
Methods inherited from class nablarch.core.db.support.DbAccessSupport
countByParameterizedSql, countByStatementSql, getParameterizedSqlStatement, getParameterizedSqlStatement, getSqlCStatement, getSqlPStatement, search
-
Constructor Details
-
MailSender
コンストラクタ。
-
-
Method Details
-
handle
メール送信要求を元にメールを送信する。 -
handleException
@Published(tag="architect") protected Result handleException(SqlRow data, ExecutionContext context, MailRequestTable.MailRequest mailRequest, MailConfig mailConfig, Exception e) メール送信時の例外のハンドル処理を行う。 本クラスでは、障害ログを出力し、送信ステータスを送信失敗にしてリトライを行う。 本メソッドでは、すべての例外をリトライ対象としてSendMailRetryableException
を送出している。 独自の処理を実施したい場合は本メソッドをオーバーライドすることで行うことができる。- Parameters:
data
- 入力データ(メール送信要求のレコード)context
- 実行コンテキストmailRequest
- メール送信要求mailConfig
- メール設定e
- メール送信時の例外- Returns:
handle(SqlRow, ExecutionContext)
が返す処理結果
-
writeSendMailFailedLog
@Published(tag="architect") protected void writeSendMailFailedLog(SqlRow data, MailRequestTable.MailRequest mailRequest, MailConfig mailConfig, jakarta.mail.SendFailedException e) メール送信失敗時のSendFailedException
例外の障害検知ログに出力する。 メール送信失敗時に、独自の処理を実施したい場合は本メソッドをオーバーライドすることで行うことができる。- Parameters:
data
- 入力データ(メール送信要求のレコード)mailRequest
- メール送信要求mailConfig
- メール設定e
- メール送信失敗時のSendFailedException
例外
-
writeCreateMailFailedLog
@Published(tag="architect") protected void writeCreateMailFailedLog(SqlRow data, MailRequestTable.MailRequest mailRequest, MailConfig mailConfig, jakarta.mail.MessagingException e) メール作成が失敗した場合に、障害検知ログに出力する。 メール作成が失敗した時に、独自の処理を実施したい場合は本メソッドをオーバーライドすることで行うことができる。- Parameters:
data
- 入力データ(メール送信要求のレコード)mailRequest
- メール送信要求mailConfig
- メール設定e
-MessagingException
-
createMimeMessage
@Published(tag="architect") protected jakarta.mail.internet.MimeMessage createMimeMessage(SqlRow data, String mailRequestId, MailRequestTable.MailRequest mailRequest, jakarta.mail.Session session, MailRecipientTable mailRecipientTable) throws jakarta.mail.MessagingException メールデータを作成する。- Parameters:
data
- 入力データ(メール送信要求のレコード)mailRequestId
- メール送信要求IDmailRequest
- メール送信先情報session
- メールセッションmailRecipientTable
- メール送信先管理テーブルのスキーマ- Returns:
- メールデータ
- Throws:
jakarta.mail.MessagingException
- メールメッセージの生成に失敗した場合
-
addBodyContent
@Published(tag="architect") protected void addBodyContent(jakarta.mail.internet.MimeMessage mimeMessage, MailRequestTable.MailRequest mailRequest, List<? extends MailAttachedFileTable.MailAttachedFile> attachedFiles, ExecutionContext context) throws jakarta.mail.MessagingException 指定されたMimeMessage
にメールメッセージ本文(添付ファイル含む)を追加する。 メッセージ本文を暗号化する場合や、電子署名を付加する場合には本メソッドをオーバライドし処理を本文の追加処理を変更すること。- Parameters:
mimeMessage
-MimeMessage
mailRequest
- メール送信要求管理の情報attachedFiles
- 添付ファイルの情報context
- 実行コンテキスト- Throws:
jakarta.mail.MessagingException
- メールメッセージの生成に失敗した場合
-
containsInvalidCharacter
@Published(tag="architect") protected void containsInvalidCharacter(String target, String mailRequestId) throws InvalidCharacterException メールヘッダ・インジェクションチェック
チェック対象文字列に\rもしくは\nを含んでいるかのチェック。 チェック内容を変更する場合や、チェック結果の振る舞いを変更する場合には本メソッドをオーバライドし処理をチェック処理を変更すること。- Parameters:
target
- チェック対象文字列mailRequestId
- メール送信要求ID- Throws:
InvalidCharacterException
- チェック対象文字列に\rもしくは\nを含んでいた場合
-
createReader
このタスクの入力データを読み込むデータリーダを生成して返す。 メール送信要求を読み込むDatabaseRecordReader
を生成する。- Specified by:
createReader
in interfaceDataReaderFactory<SqlRow>
- Specified by:
createReader
in classBatchAction<SqlRow>
- Parameters:
ctx
- 実行コンテキスト- Returns:
- データリーダ
-
updateToFailed
処理ステータスを異常終了に更新する。 更新時に例外が発生した場合は、ProcessAbnormalEnd
を送出する。- Parameters:
data
- 送信対象データcontext
- 実行コンテキスト
-
updateToSuccess
処理ステータスを正常終了に更新する。- Parameters:
data
- 送信対象データcontext
- 実行コンテキスト
-