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のPython SDKを使って大量の宛先を指定する

Last updated at Posted at 2022-08-22

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

今回はPythonでblastengineのAPIを簡単に使えるSDKを開発しましたので、使い方を紹介します。現在はトランザクションメール(即時発信メール)とバルクメール(一括配信)をサポートしています。今回は一括配信する際に大量の宛先を指定する方法を解説します。

インストール

インストールはpipコマンドで行ってください。

pip3 install blastengine

インポート

クライアントとバルクをインポートします。

from blastengine.Client import Blastengine
from blastengine.Bulk import Bulk

初期化

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

# 初期化
Blastengine('USER_NAME', 'API_KEY')

メールオブジェクトの用意

バルクメールは Bulk を使います。件名やテキスト本文などを指定します。 __name__ となっているのは、配信先ごとに置き換えられる文字列になります。

# バルク(一括発送)メールオブジェクトの作成
bulk = Bulk()
# 情報を適用する
bulk.subject('メールの件名')
# __name__ は置き換えられる文字列
bulk.text_part('テキスト本文 __name__')
# 2つ目の引数(名前)はなくても大丈夫です
bulk.fromAddress('info@example.jp', '管理者')

添付ファイルの追加

添付ファイルは attachments メソッドで、ファイルのパスを指定してください。

# 添付ファイルがある場合
bulk.attachments('./test.py')
bulk.attachments('./image.png')

一度保存する

このメールテンプレートができた段階で一度保存します。

try:
	bulk.begin()
except Exception as e:
	# APIエラー
	print(e)

少数の宛先を設定する

次に宛先を設定します。この時、置き換え文字列を設定できます。この方法では50件まで指定できます。51件目を指定すると、Exceptionエラーが発生します。

bulk.to('user1@example.com', [{
	'__name__': 'User1'
}])
bulk.to('user2@example.com', [{
	'__name__': 'User2'
}])

宛先を設定したら、保存を行います。保存すると宛先のリストはリセットされます。

bulk.update()

大量の宛先を設定する

大量の宛先を指定する場合にはCSVアップロードを使います。テンプレートはこちらからダウンロードできます。

email,__prop1__,__prop2__,__prop3__
test@example.jp,テスト,テスト太郎,20200101
sample1@example.com,サンプル,サンプル次郎,20210101

このファイルをBulkクラスのcsv_importで指定します。そうするとJobオブジェクトが返ってきます。

job = bulk.csv_import('./example.csv')
print(job.job_id)
# => 50

このCSVアップロードは非同期で処理されますので、完了まで待ちます。

while job.finished() == False:
	print(job.status) # => STARTED
	# 処理待ち
	time.sleep(5)

完了したら、取り込みエラーがあったかを確認できます。

print(job.total_count)
# => 200
print(job.success_count)
# => 198
print(job.failed_count)
# => 2

もしエラーがあれば、その原因を記したファイルをダウンロードできます。この内容はZipコンテンツなので、ダウンロード先のファイル名は .zip にしておくのが良いでしょう。

job.download_error_file('result.zip')
# => True

例えば以下のようなエラーが書かれています。

"エラーメッセージ","email","__prop1__","__prop2__","__prop3__"
"[email: [sample1@example: 無効なEメールアドレス形式です。]]","sample1@example","サンプル","サンプル次郎","20210101"

送信

送信は send メソッドになります。返値はデリバリーIDになります。このデリバリーIDで、メールの送信状況や配信停止などを行います。

try:
	# 送信
	delivery_id = bulk.send()
	print(delivery_id)
	print(bulk.delivery_id) # こちらも可
except Exception as e:
	# APIエラー
	print(e)

配信状況を知る

もし配信状況が知りたい場合には get メソッドを実行してください。これでメールの配信状況を取得します。すでに配信予約になっていると RESERVE といった文字列が返ってきます。

bulk.get()
print(bulk.status)
# => RESERVE

まとめ

Python SDKを使えばWebアプリケーションはもちろん、機械学習やIoTと組み合わせてblastengineを活用してもらえます。バルクメールは大量の宛先に対して一括配信を行うのに便利です。50件を超える宛先を指定する場合にはCSVアップロードを活用してください。

ぜひblastengineのPython SDKを活用ください!

blastengine · PyPI

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?