今回はSendGridと並んで有名なメール系サービスのMailgunに関して書いていきます!
Domainの登録
まず最初にメールで利用するドメインを登録します。 [Domains]メニューの[Add New Domain]をクリックします。
利用するメールドメインを登録します。
登録後は利用するサービスに応じてDNSレコードを登録する必要があります。メールを送信する場合はTXTレコード(SPF、DKIM)、メールを受信する場合はMXレコード、開封やクリック等のトラッキングをする場合はCNAMEレコードをそれぞれ登録します。
Routesの設定
Routesとは受信したメールをどのような捌くかを定義する設定になります。メール受信に関する機能なのでMXレコードの登録は必須です。
まず、[Routes]メニューから[Create New Route]ボタンをクリックします。
Priorityは複数のRoutes定義があった場合の処理の優先順位です。Filter Expressionは受信したメールの条件になり、ここでマッチしたものに対して、Actionsで定義した処理が実行されることになります。 以下の例では、admin@mailtest.freedom-man.comへのメールをxxx@hotmail.co.jpに転送する設定になります。
Actionsは複数定義でき、メールの転送(forward)以外に、Mailgunのストアに最大3日間保持しつつ、受信結果をWebhookで任意のURLに通知する”store”の機能も利用できます。こちらはSendGridのInbound Parse Webhookと似てる感じです。
設定後は[Test Your Routes]のところで設定したRoutesのテストをすることが可能です。任意のメールアドレスを入力して[Test]をクリックすると、Filter条件に合致するRoutesが抽出されます。
また、[Send A Sample POST]のところで、storeで利用するWebhookのURLに対するテスト送信をすることも可能です。
Logsの表示
[Logs]タブで受信メールのRoutesに関するログを閲覧することが可能です。
メーリングリストの設定
[Mailing Lists]メニューからメーリングリストを設定することができます。
Access Levelの意味はそれぞれ以下のようになっています。
- Read-only→管理者の送信(HTTP API or SMTP APIを利用した送信)でのみ利用可能
- Members→メーリングリストのメンバーであれば利用可能(Fromアドレスを見ているっぽい)
- Everyone→メーリングリストのメンバー以外でも利用可能
次にメーリングリストのメンバーの設定(Recipients)を行います。 まずは、[Create Recipient]をクリックします。
Recipient Addressesに受信アドレスをカンマ区切りで入力して、[Update]をクリックします。Unsubscribedにチェックを付けると、メールを受信させないUnsubscribedの状態で受信アドレスを追加できます。ファイル取り込みによる一括登録も可能です。
設定が完了すると、こんな感じに登録されます。
あとは、対象のメールアドレスにメールを投げると、送信者以外の受信アドレスにメールが一斉送信されます。
Webhookの設定
[Webhooks]メニューで各イベント発生時にイベント情報を任意のURLに送信するWebhookの設定が出来ます(SendGridと同様の機能です)
トラッキングが有効な場合、Mailgun経由でメールを送信したときに、メール本文に含まれているURLがemail.{domain}のURLに書き換わり、email.{domain}の開封検知用のURLの画像(ビーコン)がセットされます。ユーザがメールを開封したり、メール本文のURLをクリックするとemail.{domain}のURLにリクエストが飛ぶので、OpenやClickのWebhookの設定をしている場合、受け取ったリクエストを設定したURLに流す、という仕組みです。OpenやClickを利用する際はCNAMEレコードの設定をしていることを確認してください。
メール送信
HTTPとSMTPの2つのAPIがあります。
各APIで利用する情報は[Domains]メニューの対象ドメインの[Domain Information]から確認することができます。
SMTP APIではSMTP Hostname、Default SMTP Login、Default Passwordを、HTTP APIではAPI Base URLとAPI Keyをそれぞれ利用します。
詳細はリファレンス参照。
所感
SendGridと比較して、Routesの機能が使いやすいです。インバウンドのメールをwebhookで流すだけでなく、単純にメール転送できますし、storeでは一定期間メッセージを保持してくれるのも良い感じです。個人的にはSalesforceの組織のメールアドレスを送信専用アドレスとして設定する場合、Routeで転送設定をして転送先のメールアカウントでメールアドレスのベリファイをする、といった利用用途に使っていたりします。