受信メールをWebhookで受け取る

Customers Mail Cloudでは、メール送信だけでなく、メールを受信する機能があります。受信したメールは、転送する他、Webhookで外部システムへの通知も可能です。

今回はこのWebhook機能で送られてくるデータについて解説します。

フォーマットはJSONとマルチパートフォームデータ

Webhookの形式として、JSONとマルチパートフォームデータ(multipart/form-data)が選択できます。この二つの違いは、添付ファイルがあるかどうかです。JSONの場合、添付ファイルは送られてきません。メールに添付ファイルがついてくる可能性がある場合は、後者を選択してください。

f:id:moongift:20200227212807p:plain
Webhook設定ダイアログ

送られてくるデータについて

ではWebhookで送信されてくるデータについて解説します。JSONの場合、次のような内容です。

{
    "filter": "info@smtps.jp",
    "headers": [
      :
    ],
    "subject": "テストメール",
    "envelope-to": "info@smtps.jp",
    "server_composition": "sandbox",
    "html": "<div dir=\"ltr\">これはテストのメールです。<div>...</div></div>",
    "text": "これはテストのメールです。\r\n\r\n--\r\n...",
    "envelope-from": "admin@smtps.jp"
}

headersは下記のキーと、それに対する値が文字列で入っています。

  • Return-Path
  • DKIM-Signature
  • X-Google-DKIM-Signature
  • X-Persimmon
  • Received
  • X-Google-Smtp-Source
  • From
  • Message-ID
  • MIME-Version
  • Date
  • Subject
  • Delivered-To
  • X-Received
  • To
  • X-Gm-Message-State
  • Content-Type

メールのFromについてはヘッダーから取得できます(envelope-fromとは異なる値の場合があります)。

マルチパートフォームデータの場合

マルチパートフォームデータであってもデータ構造に大きな違いはありません。添付ファイルがある場合は下記のようなデータが入ってきます。なお、ファイル名などはBASE64エンコードされた状態で送られてくるので注意してください。

  • attachments
  • attachment1
    • filename
    • type
    • name
    • tempfile
    • head:
      • Content-Disposition
      • filename
      • Content-Type
      • Content-Transfer-Encoding

attachmentsには添付ファイルの数が入ります(上記例は添付ファイルが一つの場合)。Webサーバ側で受け取った場合は、ファイルとして展開されます(アプリケーションによって動作は異なります)。

Webhookの結果は管理画面で確認

Webhookでデータが送信されたログは管理画面で確認できます。送信時のAPIキー設定など、HTTPヘッダーを編集するといった機能も用意されていますので、運用に応じて細かなカスタマイズが可能です。

f:id:moongift:20200227212832p:plain
Webhookログ

まとめ

メールサーバが立てられない状況の場合はもちろん、メールを受信するサーバを安定稼働させるのは大変なことです。Customers Mail Cloudを使えばメール受信は任せておき、Webhookを通じてメールとアプリケーションの連携が実現できます。ぜひ試してみてください。

受信サーバ | Customers Mail Cloud