メールを受信する

SendGridではメールの送信だけでなく、メール受信に相当するParse Webhookという機能を提供しています。この機能は、設定したドメイン宛のメールをSendGridで受信して、HTTP(s)に変換して指定したURLにPOSTするものです。メール受信ができると言っても、メールボックス機能が提供されているわけではないので、受信したメールがSendGrid上に保存されることはありません。

仕組み

Parse Webhookを利用するには、メールを受信するドメインのMXレコードをSendGridに向け、そのドメインに対応したPOST先URLを指定する必要があります。設定を行ったドメイン宛のメールは全てSendGridに配信され、SendGridは受信したメールを対応するURLにHTTP(s)でPOSTします。

対象ドメインがkke.co.jpの場合:

必要条件

Parse Webhookを利用するには、事前に該当ドメインのDomain Authentication設定が必要になります。Domain Authenticationで設定したドメインおよびその配下の任意のサブドメインがParse Webhookで設定可能になります。
例えば、@kke.co.jpや@hoge.kke.co.jpドメインでメール受信したい場合、Domain AuthenticationのDOMAINに「kke.co.jp」と入力した設定を作成する必要があります。SUBDOMAINには他(Parse Webhookで使用するサブドメインも含む)で使用していない任意の値を設定してください。

設定

SendGrid側の設定

Webポータルのメニューから「Settings > Inbound Parse」を選択して、「Add Host & URL」ボタンを選択します。

以下を参考にして設定を行い「Add」ボタンを選択して保存します。

  • Subdomain
    メール受信するドメインにサブドメインを付加する場合に設定を行います。入力は任意です。
  • Domain
    メール受信するドメインを指定します。設定済みDomain Authentication一覧から選択します。
  • Destination URL
    POSTを受信するWebアプリケーションのURLを指定します。
  • Check incoming emails for spam
  • POST the raw, full MIME message
    詳細はユーザマニュアルを確認してください。今回はいずれもチェックをOFFにします。

DNSレコードの登録

次に、メールを受信するドメインのDNSにレコードを追加します。追加対象のドメインは先程Inbound Parse設定画面で設定したSubdomainおよびDomainのドメインです。例えば、

  • Subdomain:hoge
  • Domain:kke.co.jp

と設定した場合、以下のようなDNSレコードを登録します。

  • Host:hoge.kke.co.jp
  • Type:MX
  • Value:mx.sendgrid.net

DNSレコードを登録したら内容が反映されるまでしばらく待ちます。

POSTを受信するアプリケーションの準備

POSTを受信するにはWebアプリケーションを用意する必要があります。まずはPOSTの内容を確認してみたい場合はRequestBinというサービスを利用するのが簡単です。この他に、実際のアプリケーションで試してみたいという方向けに、POSTを受信するサンプルアプリケーションを公開しています。Readmeの手順に従ってPOSTの受信環境を構築してください。Parse WebhookでPOSTされる内容の詳細についてはAPIリファレンスを参照してください。

動作確認

設定が完了したら、設定したドメイン宛に任意のクライアントからメールを送信します。この際、ローカルパートは何でも構いません。SendGrid側でメールを受信すると、設定したURLにPOSTされます。この際、POSTが成功するかどうかによらずActivity上でParseイベントが記録されます。POSTに失敗した場合、ParseイベントのREASONにて失敗の原因を確認してください。Parseイベントが記録されていない場合、SendGridにメールは届いていません。

  • POSTに成功した場合

  • POSTに失敗した場合

注意事項

MXレコードをSendGridに向けることでそのドメイン宛のメールが全てSendGridに配信されます。既にメール受信に利用しているドメインの設定を変更すると既存のメールサーバにはメールが配信されなくなってしまいますのでご注意ください。