Transactional EmailのZip暗号化設定について

Customers Mail Cloudの中に、Transactional Emailの暗号化設定というのがあります。これを使ったことがある方は、それほどいないのではないでしょうか。

今回はその使い方を実際のコードを含めながら紹介します。

Transactional EmailのZip暗号化設定とは

そもそもこの設定が何かというと、Transactional Email APIで取得できるデータを圧縮し、さらにパスワード暗号化するという機能になります。Transactional Email APIはCustomers Mail CloudでのイベントデータをダウンロードするAPIになります。イベントは例えばメール送信、エラーなどになります。

設定について

設定はTransactional Email暗号化設定画面にて行います。通常のダウンロード時にはパスワードは設定されません。

f:id:moongift:20200414182406p:plain
パスワード設定画面

使い方

例えば送信メールをダウンロードします。今回はNode.jsで書きます。まず必要なライブラリをインポートします。superagentは npm install superagent -S でインストールしてください。

const request = require('superagent');
const fs = require('fs');

次にURLを作成します。作成する手順はDeliveries | Customers Mail Cloudを確認してください。アクションで download を指定するのがポイントです。

const version = 'v2'
const resource = 'deliveries';
const action = 'download';
const format = 'json';
const url = `https://api.smtps.jp/transaction/${version}/${resource}/${action}.${format}`;

次に条件を指定します。server_compositionの値はsandbox、standard、サブドメインのいずれかになります。

// サーバの指定
const serverComposition = 'sandbox';
// 日付の指定
const date = '2020-03-09';

そしてダウンロード処理を実行します。Node.jsでsuperagentを使う場合は .responseType('blob') としてファイルダウンロードを指定します。ダウンロードしたらファイルのパスを指定して書き出します。

const apiUser = 'API_USER';
const apiKey  = 'API_KEY';
const res = await request
    .post(url)
    .responseType('blob')
    .send({
      api_user: apiUser,
      api_key: apiKey,
      server_composition: serverComposition,
      date: date
    });
  fs.writeFileSync('download.zip', res.body);
})();

暗号化設定されている場合は、解凍時にパスワード入力が必要です。

f:id:moongift:20200414182453p:plain
パスワード入力ダイアログ

パスワードが合っていれば解凍されます。

f:id:moongift:20200414182526p:plain
メール送信イベントログ

まとめ

ダウンロードされるCSVにはメールアドレスが入っていますので、取り扱いには注意が必要です。また、メールの件名はありますが、本文はありませんので注意してください。運用時にはパスワードロックをして保管しておくのがよさそうです。

Transactional Email API | Customers Mail Cloud