MailSlurpを利用したSendGridのE2Eテスト

SendGridサポートエンジニアの菊田(@kikutaro_)です。突然ですが、開発者の皆さんはメール送信のテストをどのように行っていますか?テストコードを実装するとき、SMTPによるメール送信であれば組み込みサーバを利用できますが、Web APIによるメール送信の場合、テスト用のメールボックスを用意するなど工夫が必要になります。

本日紹介する「MailSlurp」はメールのE2E(end-to-end)テストをサポートするサービスで、
メールのテストを簡単にする仕組みを提供してくれます。具体的には、Web APIによるメールボックスの作成・削除、受信メールのデータ取得などが可能で、RESTで簡単に呼び出せるのでコードにも組み込みやすいです。

MailSlurp

今回のブログではAPIリファレンスを使って以下の手順を実行します。

  1. MailSlurpのAPI Keyを取得
  2. MailSlurpのWeb APIでメールボックスを作成
  3. SendGridのWeb APIでメール送信
  4. MailSlurpのWeb APIで受信メールを取得

具体的なテストコードの例は挙げませんが、この手順をユニットテストなどで実行することでメール送信テストが簡単に組み込めます。

1.MailSlurpのAPI Keyを取得

MailSlurpのWeb APIを呼び出すにはAPI Keyが必要です。MailSlurpへログインして、メニューの「API Key」をクリックするとAPI Keyの値が表示されるのでコピーします。

API Keyをコピー

2.MailSlurpのWeb APIでメールボックスを作成

「API Key」メニューの下にある「REST API Docs」を選択するとMailSlurpのAPIリファレンスが表示されます。

MailSlurpのAPIリファレンス

メールボックスの作成はエンドポイント「/inboxes」のPOSTメソッドで行います。メソッドを選択すると下図のようにメニューが展開されるので、API Keyを入力して「Try It out」ボタンを押します。

メールボックスの作成

成功するとレスポンスでメールボックスのidとメールアドレスが返ってくるので、次にこのメールアドレス宛てにメールを送信します。

メールボックスのidとメールアドレスの発行

3.SendGridのWeb APIでメール送信

SendGridのWeb APIを使ってメールを送信します。SendGridもMailSlurp同様にブラウザからWeb APIを実行できます。細かい利用方法はブログ「新しいAPIリファレンスが追加されました」をご確認ください。

MailSlurpで発行されたメールアドレス宛にメール送信

4.MailSlurpのWeb APIで受信メールを取得

SendGridによるメール送信が完了したら、MailSlurpのWeb APIにあるエンドポイント「/inboxes/{uuid}」を利用して受信メールのデータを取得します。uuidの部分には「2.メールボックスの作成」でメールアドレスとともに返ってきたメールボックスのidを指定します。

実行すると以下のように受信メールの内容を取得できます。bodyにはヘッダ情報を含めたメール本文が含まれています。

受信メールの内容を取得

メールボックスが不要になった場合はエンドポイント「/inboxes」のDELETEメソッドで削除可能です。

このように簡単に送信されたメールの内容まで確認できました。今回はAPIリファレンスを利用してマニュアル実行しましたが、コードで一連のWeb APIを呼ぶだけで手軽にメールのE2Eテストが実装できます。メール送信のテストに困っていた方は試してみるといかがでしょうか?