LoginSignup
1
0

More than 1 year has passed since last update.

blastengineのバルクメール編集リミットに達した場合の対応

Posted at

blastengineはエンジニアフレンドリーなメール送信サービスです。メールを即時配信するトランザクションと、一括配信するバルクメールに対応しています。

バルクメールでは、まずテンプレートを保存します。そして、そのテンプレートに対して宛先情報を登録して送信を行います。その際、以下のようなエラーメッセージが出る場合があります(エラーメッセージは加工済み)。

Exception: Error in main: number of EDIT statuses exceeds 10.

これは、EDIT(メール送信されていない状態)のメールテンプレートは10個までしか保存できないことに起因して発生するものです。こうした状態のメールは適宜削除、または送信処理を行う必要があります。

削除対応について

今回はNode.js SDKを使って削除してみます。インストールは npm コマンドで行います。

npm i blastengine

ライブラリのインポート

ライブラリをインポートします。TypeScriptなので、実行時には ts-node も必要でしょう。

import { BlastEngine, Bulk } from 'blastengine';

初期化

blastengineのユーザー名、APIキーを用いて初期化します。

USER_NAME = 'YOUR_USER_NAME';
API_KEY = 'YOUR_API_KEY';
new BlastEngine(USER_NAME, API_KEY);

処理をループする

2022年12月現在、EDITのメールだけを検索するといった機能がないので、ループ処理で対応します。

MIN_NUMBER = 1;
MAX_NUMBER = 1200;
for (let i = MIN_NUMBER; i < MAX_NUMBER; i++) {
	// 以下はこの中に記述
}

バルクメールを作成する

バルクメールオブジェクトを作成し、デリバリーIDを適用します。

const bulk = new Bulk;
bulk.delivery_id = i;

情報を取得

メールの情報を取得し、そのステータスがEDITであれば削除します。

try {
	await bulk.get();
	if (bulk.status === 'EDIT') {
		console.log(`Delete: ${bulk.delivery_id}`);
		await bulk.delete();
	}
} catch (e) {
}

ウェイトする

API負荷を考慮して、500ms処理待ちします。

await new Promise((res) => setTimeout(res, 500));

これで完成です。

全体の処理

全体の処理は以下のようになります。

USER_NAME = 'YOUR_USER_NAME';
API_KEY = 'YOUR_API_KEY';
MIN_NUMBER = 1;
MAX_NUMBER = 1200;
new BlastEngine(USER_NAME, API_KEY);
for (let i = MIN_NUMBER; i < MAX_NUMBER; i++) {
	const bulk = new Bulk;
	bulk.delivery_id = i;
	try {
		await bulk.get();
		if (bulk.status === 'EDIT') {
			console.log(`Delete: ${bulk.delivery_id}`);
			await bulk.delete();
		}
	} catch (e) {
		console.log(`${bulk.delivery_id}`);
	}
	await new Promise((res) => setTimeout(res, 500));
}

まとめ

将来的には10個までの制限撤廃や、EDIT状態のメール検索などが提供されるかも知れません。取り急ぎ2022年12月現在では、以上のような対応になります。もしblastengineを使っていて上記エラーが出たら、今回の対応を行ってください。

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

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