Transactional Email APIを使って送信完了したメールを一覧取得する(Node.js編)

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を定期的に実行することで、メール配信状況を簡単に集計できるようになります。大量メール送信時にはリアルタイムよりも、配信完了してから集計した方が効率的な場合もあるでしょう。ぜひ活用してください。

Transactional Email API