blastengineは開発者にとって使いやすいメール配信サービスを提供しています。まだサービスローンチしたばかりでSDKが不足しているのですが、徐々に開発を進めています。
まず最初にNode.js向けにSDK開発を進めていますが、一斉配信用にメールアドレスをCSVアップロードできるようになりました。この記事ではその使い方を解説します。
ユーザ登録する
blastengineにユーザ登録します。管理画面に入るためのユーザID、パスワードが手に入るので、ログインします(ユーザIDは後で使います)。
送信元ドメインのSPFを設定する
送信元として利用するドメイン(自分で持っているもの)の設定をします。これは任意のドメイン管理サービスで設定できますが、TXTレコードに以下のSPFを追加します。
txt @ v=spf1 include:spf.besender.jp ~all
APIキーを取得する
ログイン後、管理画面の右上にある設定メニューに移動します。
そして設定の中で、APIキーを取得します。
必要な情報について
SDKを使う上で必要なのは、先ほどのAPIキーとユーザIDになります。
SDKのインストール
SDKは npm コマンドでインストールできます。
npm i blastengine
SDKのインポート
まずSDKをインポートします。
import { BlastEngine, Bulk } from 'blastengine';
初期化
先ほどのAPIキーとユーザIDを使って初期化します。
new BlastEngine(YOUR_USER_ID, YOUR_API_KEY);
一斉配信オブジェクトを作成する
一斉配信用のオブジェクトを生成します。
const bulk = new Bulk;
必要な情報をセットする
続けて、一斉配信オブジェクトに必要なオブジェクトをセットします。
bulk
.setFrom('info@example.com', 'YOUR NAME')
.setSubject('Test subject')
.setText('メールの本文');
メール配信内容を登録する
一斉配信内容をblastengineに登録します。
const res = await bulk.register();
宛先をセットする
次に宛先をセットします。宛先は1件ずつセットもできます。
bulk.setTo('example1@example.com', {key: '__code1__', value: '値'});
bulk.setTo('example2@example.com', {key: '__code1__', value: '値2'});
await bulk.update();
CSVアップロードする
メールアドレスが入ったCSVファイルを用意します。他のカラムは置き換え用キーワードになります。
email,__prop1__,__prop2__,__prop3__
test@example.jp,テスト,テスト太郎,20200101
sample1@example.com,サンプル,サンプル次郎,20210101
このファイルを指定してアップロードを行います。この処理は非同期で登録されるので、まずジョブクラスが返ってきます。
const job = await bulk.import(path.resolve('./tests/mail.csv'));
そして処理が完了するのを待ちます。
while (!job.finished()) {
await job.get();
await new Promise((resolve) => setTimeout(resolve, 1000));
}
ジョブクラスには次のようなプロパティもあります。
class Job {
// ジョブID
public id: number;
// 総処理件数
public total_count?: number;
// 処理中の%
public percentage?: number;
// 成功した件数
public success_count?: number;
// 失敗した件数
public failed_count?: number;
// ステータス
public status?: string;
}
失敗レポートダウンロード
インポートに失敗したメールアドレスはレポートをダウンロードできます。エラーがない場合には何も返ってこない(404)なので、あらかじめisErrorでチェックしてください。
if (await job.isError()) {
// エラーあり
console.log(job.report); // CSVでエラー内容表示
} else {
// エラーなし
}
配信を開始する
後は send メソッドで配信を実行します。配信時には任意の時間を設定できます。デフォルトでは1分後としています。
await bulk.send();
// 一日後の場合
const date = new Date;
date.setDate(date.getDate() + 1);
const res = await bulk.send(date);
res.delivery_id
に数字が入っていれば、送信完了です。
res.delivery_id
// => 18
配信キャンセルする
配信予約した後でキャンセルする(編集状態に戻す)場合には cancel メソッドを使ってください。
await bulk.cancel();
削除する
一斉配信用のオブジェクトを削除する場合には delete メソッドを使ってください。なお、一斉配信用のオブジェクトは10個までしか作成できません。
await bulk.delete();
コードについて
コードはGitHubにアップしてあります。ライセンスはMIT Licenseになります。
blastengineMania/blastengine-node
まとめ
blastengineには他にも一括メール配信を行ったり、添付ファイル付きのメール配信機能などもあります。これらの機能もSDKに随時実装していきますので、ぜひ皆さんのシステム開発に役立ててください。