Transactional Email APIを使うと、メール送信に関する結果データを参照したり、ブロックリストの編集などを行えます。Webhookとは異なり、データを任意のタイミングで取得できますので、バッチ処理などに向いているでしょう。
今回はそのTransactional Email APIの簡単な使い方を紹介します。
Node.jsから使ってみる
今回はNode.jsから利用するサンプルコードを紹介します。HTTPリクエストを行うので、superagent
というライブラリを利用します。
まず必要な変数を用意します。APIユーザ、APIキーは管理画面で作成してください。
const request = require('superagent'); const apiUser = 'api@smtps.jp'; const apiKey = 'api_key';
次にAPIのURLを指定します。今回は送信完了の一覧を取得しますので、次のようなURLになります。
const version = 'v2' const resource = 'deliveries'; const action = 'list'; const format = 'json'; const url = `https://api.smtps.jp/transaction/${version}/${resource}/${action}.${format}`;
上記の変数は他にも下記が指定できます。なお、指定できるアクションはリソースによって異なります。詳しくは共通仕様 | Customers Mail Cloudをご覧ください。
変数名 | 値 |
---|---|
version | v1またはv2 |
resource | deliveries, bounces, blocks, statistics, auditlogs |
action | list, download, delete, |
format | xmlまたはjson |
今回は送信完了(deliveries)の一覧(list)をJSONで取得する、という指定になります。
処理を実行する
処理を実行する際には、APIユーザとAPIキー、そしてサーバの接続先(trial、standard、proの指定)を指定します。送信完了データの取得時には日付も必要なので、それも指定します。
// サーバの指定 const serverComposition = 'sandbox'; // 日付の指定 const date = '2020-03-09'; const res = await request .post(url) .send({ api_user: apiUser, api_key: apiKey, server_composition: serverComposition, date: date }); console.log(res.body);
この結果は、送信完了したメールの一覧になります。デフォルトで10件返ってきます。
{ "deliveries": [ { "apiData": "", "created": "2020-03-09 13:28:48", "from": "info@smtps.jp", "messageId": "<78bf87c0-61be-11ea-b350-0661780002d9@mta02.sandbox.smtps.jp>", "reason": "", "returnPath": "info@return.sandbox.smtps.jp", "senderIp": "", "sourceIp": "127.0.0.1", "status": "queued", "subject": "テストメール from Python", "to": "tester@smtps.jp" }, : ] }
まとめ
Transactional Email APIを定期的に実行することで、メール配信状況を簡単に集計できるようになります。大量メール送信時にはリアルタイムよりも、配信完了してから集計した方が効率的な場合もあるでしょう。ぜひ活用してください。