メール送信のテストについて調べていたところ、MailTrapという便利なサービスがあることを知りました。
MailTrapを使うと送信テストで一番怖い「メールの誤送信事故」を確実に防ぐことができます。宛先に本番データを使っても大丈夫です。
仕組みはよくあるSMTPのモックと同じで、MailTrapの場合はダミーのinboxを作ってくれて
SMTPの他、POPもダミーを用意してくれます。
あとは、このモック開発環境やテスト環境を設定するだけです。たとえば、JavaMailでSendGridのSMTPを使っているアプリケーションがあった場合、以下のようにSMTPの接続先と認証情報を変えるだけです。
Properties prop = new Properties();
prop.put("mail.smtp.host", "smtp.mailtrap.io");
prop.put("mail.smtp.port", 2525);
Transport.send(msg, "user", "password");
宛先のメールアドレスに実在のものを指定してメール送信すると、MailTrapのinboxで以下のようにメールを確認できます。もちろん、実際の宛先メールアドレスにはメールが届きません。
Rawデータの確認もできます。(NetBeansで文字コード指定していないからMS932(^^;
Analysisでは簡単なスパム判定までしてくれます。裏ではSpamAssasin使っているようです。
inboxのメールはAPIを利用して簡単に取得できます。
そのため、先日書いたMailSlurpのようなE2Eテストもやろうと思えばできそうです。
kikutaro777.hatenablog.com
お手軽に事故防止しつつ、ちゃんとしたテストができるので良い感じです。
調べたら日本語記事も結構ありました。
qiita.com
qiita.com
its-office.jp