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を活用ください!