Transactional Email APIを使うと、メール送信に関する結果データを参照したり、ブロックリストの編集などを行えます。Webhookとは異なり、データを任意のタイミングで取得できますので、バッチ処理などに向いているでしょう。
今回はそのTransactional Email APIの簡単な使い方を紹介します。
Rubyから使ってみる
今回はRubyから利用するサンプルコードを紹介します。HTTPリクエストを行うので、httparty
をインポートします。
require('httparty')
まず必要な変数を用意します。APIユーザ、APIキーは管理画面で作成してください。
api_user = 'API_USER'; api_key = 'API_KEY';
次にAPIのURLを指定します。今回は送信完了の一覧を取得しますので、次のようなURLになります。
version = 'v2' resource = 'deliveries' action = 'list' format = 'json' 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の指定)を指定します。送信完了データの取得時には日付も必要なので、それも指定します。
# サーバの指定 server_composition = 'sandbox' # 日付の指定 date = '2020-03-09'
さらにポストするデータの組み立てと、必要なコンテンツタイプの指定を行います。
body = { api_user: api_user, api_key: api_key, server_composition: server_composition, date: date } headers = { 'Content-Type': 'application/json' }
これで送信を行えば、結果が返ってきます。
begin res = HTTParty.post(url, { headers: headers, body: body.to_json }) puts res.body rescue => e puts e end
この結果は、送信完了したメールの一覧になります。デフォルトで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を定期的に実行することで、メール配信状況を簡単に集計できるようになります。大量メール送信時にはリアルタイムよりも、配信完了してから集計した方が効率的な場合もあるでしょう。ぜひ活用してください。