1
0

More than 1 year has passed since last update.

blastengineのPHP SDKを使ってCSVで宛先を一括取り込みする

Posted at

blastengineはエンジニアフレンドリーなメール配信サービスです。APIとSMTPリレーの両方をサポートしており、手軽に素早くメール配信ができるようになっています。

今回はPHPでblastengineのAPIを簡単に使えるSDKを開発しましたので、使い方を紹介します。この記事ではバルクメール(一括送信メール)で、メールの宛先をCSVからインポートする方法を紹介します。

インストール

インストールはcomposerで行ってください。

composer install blastengine/blastengine

インポート

autoloaderでファイルを読み込みます。

require __DIR__ . '/vendor/autoload.php';

初期化

Blastengineを初期化します。ユーザ名とAPIキーを使います。

// 初期化
Blastengine\Client::initialize($your_user_id, $your_api_key);

CSVを用意する

インポートに利用するCSVファイルは以下のようなフォーマットになります。2列目以降は置き換えキーワードと、その文字列になります。

email,__example__,__name__,__date__
test1@example.jp,テスト,テスト太郎,20200101
test2@example.jp,サンプル,サンプル次郎,20210101
test3@example.jp,テスト,テスト太郎,20200101

バルクメールを作成する

まず最初にバルクメールを作成します。まず宛先のない状態で、テンプレートを保存します。

$bulk = new Blastengine\Bulk();
$bulk
	->from('info@example.com')
	->subject('Test subject')
	->text_part('This is test email to __name__')
	->save();

CSVをインポートする

インポートは import メソッドにCSVファイルを指定して実行します。このCSVインポートは非同期(バッチ)処理で、この時点ではまだ完了していません。

$job = $bulk->import("./example.csv");

なお、初期設定では1件でもデータに不備があると全体の取り込みが失敗します。これを無視する場合には2つ目の引数に true を渡してください。

$job = $bulk->import("./example.csv", true);

CSVインポートのステータスをチェックする

finished メソッドでインポートが完了したかチェックします。途中の場合は percentage プロパティに取り込み状況(パーセンテージ)が入っています。

while ($job->finished() == false) {
	sleep(1);
}

Jobクラスのプロパティ

Jobクラスでは以下のプロパティを用意しています。

プロパティ 意味
total_count 全ての取り込んだ件数
success_count 取り込み成功した件数
failed_count 取り込み失敗した件数
error エラーがあれば true
error_file_url 取り込み失敗した結果の書かれたファイルのURL

エラー内容を確認する

error がtrueだった場合、 error_report メソッドでエラー内容を取得できます。CSVの文字列になっています。

if ($job->error) {
	// エラーがある場合
	$report = $job->error_report();
}

メッセージは、例えば以下のような内容です。

"エラーメッセージ","email","__prop1__","__prop2__","__prop3__"
"[email: [test3@example: 無効なEメールアドレス形式です。]]","test3@example","テスト","テスト太郎","20200101"

まとめ

PHP SDKを使えばWebアプリケーションから簡単にblastengineが呼び出せます。ぜひblastengineのRuby SDKを活用ください!

blastengine/blastengine - Packagist

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