Class MailSender

All Implemented Interfaces:
DataReaderFactory<SqlRow>, Handler<SqlRow,Result>, ExecutionHandlerCallback<CommandLine,Result>, TransactionEventCallback<SqlRow>

public class MailSender extends BatchAction<SqlRow>
メール送信要求管理テーブル上の各レコードごとにメール送信を行うバッチアクション。
Author:
Shinsuke Yoshio
  • Constructor Details

    • MailSender

      @Published(tag="architect") public MailSender()
      コンストラクタ。
  • Method Details

    • handle

      public Result handle(SqlRow data, ExecutionContext context)
      メール送信要求を元にメールを送信する。
      Specified by:
      handle in interface Handler<SqlRow,Result>
      Specified by:
      handle in class BatchAction<SqlRow>
      Parameters:
      data - 入力データ(メール送信要求のレコード)
      context - 実行コンテキスト
      Returns:
      処理結果
    • 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 - メール送信要求ID
      mailRequest - メール送信先情報
      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

      @Published(tag="architect") public DataReader<SqlRow> createReader(ExecutionContext ctx)
      このタスクの入力データを読み込むデータリーダを生成して返す。 メール送信要求を読み込むDatabaseRecordReaderを生成する。
      Specified by:
      createReader in interface DataReaderFactory<SqlRow>
      Specified by:
      createReader in class BatchAction<SqlRow>
      Parameters:
      ctx - 実行コンテキスト
      Returns:
      データリーダ
    • updateToFailed

      @Published(tag="architect") protected void updateToFailed(SqlRow data, ExecutionContext context)
      処理ステータスを異常終了に更新する。

      更新時に例外が発生した場合は、ProcessAbnormalEndを送出する。

      Parameters:
      data - 送信対象データ
      context - 実行コンテキスト
    • updateToSuccess

      @Published(tag="architect") protected void updateToSuccess(SqlRow data, ExecutionContext context)
      処理ステータスを正常終了に更新する。
      Parameters:
      data - 送信対象データ
      context - 実行コンテキスト