Customers Mail Cloudでは、メール送信だけでなく、メールを受信する機能があります。受信したメールは、転送する他、Webhookで外部システムへの通知も可能です。
今回はこのWebhook機能で送られてくるデータについて解説します。
フォーマットはJSONとマルチパートフォームデータ
Webhookの形式として、JSONとマルチパートフォームデータ(multipart/form-data)が選択できます。この二つの違いは、添付ファイルがあるかどうかです。JSONの場合、添付ファイルは送られてきません。メールに添付ファイルがついてくる可能性がある場合は、後者を選択してください。
送られてくるデータについて
では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ヘッダーを編集するといった機能も用意されていますので、運用に応じて細かなカスタマイズが可能です。
まとめ
メールサーバが立てられない状況の場合はもちろん、メールを受信するサーバを安定稼働させるのは大変なことです。Customers Mail Cloudを使えばメール受信は任せておき、Webhookを通じてメールとアプリケーションの連携が実現できます。ぜひ試してみてください。