TalentX Tech Blog

Tech Blog

Inbound Parse Webhookを使用してシステムでメールを受信する

はじめまして、TalentXの内之丸です。
TalentXではバックエンドの開発を行っています。
今回はSendGridの機能であるInbound Parse Webhookを使用して、システムでメールを受信する方法について、ご紹介いたします。

Inbound Parse Webhookとは

Inbound Parse Webhookとは、特定ホストへのメールをSendGridが受け取り、本文、添付ファイル、ヘッダなどの情報をパースし、指定されたURLへPOSTする機能です。
Myシリーズでは、人事、候補者間のメッセージやりとりにて、候補者からの返信メッセージをMyシリーズ画面で表示するために使用しています。
Inbound Parse Webhookにより、Myシリーズのバックエンドサーバーでメールを受け取り、データベースに保存することができます。

Inbound Parse Webhookを使用するメリット

  • メールデータの解析と柔軟な利用
    メール本文、送信者、受信者、件名、ヘッダー、添付ファイルなど、メールの詳細なデータを受け取れるため、メールの内容をカスタム処理に利用できます。

  • 簡単なセットアップ
    メール受信機能を組み込む際に、メールサーバーの設定やメール解析のロジックを一から作成する手間を省き、簡単に自動化することができます。

  • スケーラビリティ
    SendGridのインフラを利用することで、大量のメールを処理する際にも安定してサービスを利用できます。

システム構成

システム構成
ユーザから送信されたメールの内容をInbound Parse Webhookにより、Myシリーズのサーバーに用意したエンドポイントへリクエストし、データベースに保存します。

設定方法

  1. ドメイン認証
    Inbound Parse Webhookでは、特定ドメイン宛のメールを対象とするため、メールを受信するためのドメインを作成し、DomainAuthenticationにてドメイン認証を行う必要があります。
    詳しくはこちらを参照ください。

  2. MXレコードの登録
    SendGridでメールを受信できるようにするため、DNSサービスにMXレコードを登録する必要があります。
    AWS Route53では、以下のような設定でレコードを登録します。

    MXレコード登録

  3. Inbound Parse Webhookの設定
    SendGridコンソールから、Inbound Parse Webhookの設定を行います。

    • Receibing Domain:受信するドメイン
    • Destination URL:メール受信用に用意したエンドポイントのURL
      Inbound Parse Webhook設定
  4. Inbound Parse Webhook用のエンドポイント実装
    Destination URLに記載したURLへPOSTリクエストされるため、リクエストを受付けるエンドポイントを作成し、必要な処理を実装します。
    リクエストの形式はこちらを参照ください。

工夫した点

  • メール送信元の判別
    Myシリーズでは、人事、候補者間でメッセージをやり取りするため、誰のメッセージに対する返信かを判別する必要がありました。
    Inbound Parse Webhookでは、設定したドメインに対する全てのメールを対象とするため、送信するメールアドレスのローカルパートに一意のトークンを付与することで、受信したメールが誰のメッセージに対する返信なのかを判別できるようにしました。
token@example.com
  • メッセージドメイン設計
    Myシリーズでは、メッセージのドメインルールとして、件名、本文に何らか入力されていることを必須としていました。
    しかし、Inbound Parse Webhookを使用してメールを受信する場合、ユーザは一般的なメーラーからメールを送信するため、件名、本文が空のメールを送信することができます。 したがって、件名、本文が空でも受け付けられるよう、ドメインルールを変更しました。

最後に

最後まで読んでいただきありがとうございました。
メール受信機能の導入を検討している方の参考になれば幸いです。

TalentXでは一緒に働く仲間を募集しております。カジュアル面談も行っていますので気になる方はぜひご応募いただければ幸いです! i-myrefer.jp