今回はintra-martのAPIを使ったメール送信の停止方法について紹介します。
背景
運用テストなどでメール送信のテストを行う際には、メールを対象ユーザに送信しないようにしなければなりません。
その方法として、メールサーバを停止するなどが挙げられます。
ですがこれだと、メール送信自体は止めていないので、テストを行う際に下記のようなエラーが余計にログに出力されてしまいます。
[ERROR] j.c.i.s.m.t.a.LocalThreadTaskExecutor - [E.IWP.MESSAGEHUB.ASYNCRONOUS.00009] 非同期タスクの実行に失敗しました。
これによって、他のログが見にくくなってしまいます。
なので、このエラーを表示させないために、下記のメール送信リスナを使ってメール送信自体を止める方法をご紹介します。
MailSendListener (javadoc-all-dev 8.0.0 API)
使用方法
使用するには以下の2点の設定を行います。
- MailSendListenerの実装クラスを作成
- javamail-config.xmlファイルにlistenerタグを設定
MailSendListenerの実装クラスを作成
任意のパッケージ下にクラスを設定します。
package jp.co.gsol.mailsend.control; import jp.co.intra_mart.foundation.mail.MailSenderException; import jp.co.intra_mart.foundation.mail.javamail.listener.MailSendEvent; import jp.co.intra_mart.foundation.mail.javamail.listener.MailSendListener; public class MailSendControl implements MailSendListener { @Override public int onSendMail(MailSendEvent event) throws MailSenderException { return STOP_MAILSEND; } }
今回はメール送信を停止させたいので、returnにはSTOP_MAILSENDを設定します。
ちなみにこのリスナでは戻り値をCONTINUEにすればメール送信され、また任意の処理が実行可能です。 メール件名や宛先をログ出力させることもできたりします。
詳細は上記のドキュメントを確認してみてください。
javamail-config.xmlにlistenerタグを設定
作成したクラスをjavamail-config.xmlファイルに以下のように追記します。 ドキュメントは下記を参考にしてください。
メール設定 — 設定ファイルリファレンス 第30版 2022-06-01 intra-mart Accel Platform
<listener> <listener-class> jp.co.gsol.mailsend.control.MailSendControl</listener-class> </listener>
これで設定は完了です。
まとめ
今回はメール送信リスナを使い、メール送信自体を止める方法について紹介しました。
これを設定しておけばエラーログを出力せずに運用テストをすることができるので、気になる方はぜひ試してみてください。