1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

blastengineのNode.js SDKで一斉配信用メールアドレスをCSVアップロードする

Last updated at Posted at 2022-08-25

blastengineは開発者にとって使いやすいメール配信サービスを提供しています。まだサービスローンチしたばかりでSDKが不足しているのですが、徐々に開発を進めています。

まず最初にNode.js向けにSDK開発を進めていますが、一斉配信用にメールアドレスをCSVアップロードできるようになりました。この記事ではその使い方を解説します。

blastengine - npm

ユーザ登録する

blastengineにユーザ登録します。管理画面に入るためのユーザID、パスワードが手に入るので、ログインします(ユーザIDは後で使います)。

getting-started-4.jpg

送信元ドメインのSPFを設定する

送信元として利用するドメイン(自分で持っているもの)の設定をします。これは任意のドメイン管理サービスで設定できますが、TXTレコードに以下のSPFを追加します。

txt @ v=spf1 include:spf.besender.jp ~all

APIキーを取得する

ログイン後、管理画面の右上にある設定メニューに移動します。

getting-started-6.jpg

そして設定の中で、APIキーを取得します。

getting-started-5.png

必要な情報について

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に随時実装していきますので、ぜひ皆さんのシステム開発に役立ててください。

エンジニア向けメール配信システム「ブラストエンジン」

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?