blastengineは開発者にとって使いやすいメール配信サービスを提供しています。まだサービスローンチしたばかりでSDKが不足しているのですが、徐々に開発を進めています。
Googleスプレッドシートなどで使えるGoogle Apps Script SDK(GAS SDK)にて、メールの種類(即時配信、一括配信など)を気にせずに利用できるMailクラスを作成しましたので、その使い方を解説します。
コードについて
GAS SDKはMIT Licenseのオープンソース・ソフトウェアです。リポジトリは以下にあります。
blastengineMania/blastengine-gas: Google Apps Script向けのblastengine SDKです
ユーザ登録する
blastengineにユーザ登録します。管理画面に入るためのユーザID、パスワードが手に入るので、ログインします(ユーザIDは後で使います)。
送信元ドメインのSPFを設定する
送信元として利用するドメイン(自分で持っているもの)の設定をします。これは任意のドメイン管理サービスで設定できますが、TXTレコードに以下のSPFを追加します。
txt @ v=spf1 include:spf.besender.jp ~all
APIキーを取得する
ログイン後、管理画面の右上にある設定メニューに移動します。
そして設定の中で、APIキーを取得します。
必要な情報について
SDKを使う上で必要なのは、先ほどのAPIキーとユーザIDになります。
ライブラリIDについて
GASのライブラリIDは 1GvJKygDvrhoq9w1FIRepBo1kAB3yo1LucHtL6CIM-KqmaFaxLUbyBdim
になります。こちらをGoogle Apps Scriptのエディタにて、ライブラリとして登録してください。
1GvJKygDvrhoq9w1FIRepBo1kAB3yo1LucHtL6CIM-KqmaFaxLUbyBdim
今回はIDを Blastengine
として解説します。変更している場合はそれぞれ読み替えてください。
初回実行時の注意
初回実行時には外部URL(blastengineのAPI)にアクセスを許可するダイアログが出ます。なお、この時に以下のような怖いダイアログが出ます。
これはインストール数が増えると消えるらしいのですが、まだ作成したばかりのため表示されてしまうようです。左下にある詳細というリンクから許諾を続行できます。
初期化
先ほど取得したユーザー名とAPIキーを使って初期化します。
Blastengine.init('YOUR_USER_NAME', 'YOUR_API_KEY');
メールの種類
blastengineで利用する主なメールの種類は以下の2つになります。
メール種別 | 添付ファイル | 即時配信 | 宛先 | CC・BCC | 配信日時指定 |
---|---|---|---|---|---|
トランザクションメール | ○ | ○ | 1つ | ○ | × |
バルクメール | ○ | ○ | 複数 | × | ○ |
MailクラスではCCとBCCを指定しながら、配信日時を指定しようとするとエラーになるので注意してください。
Mailクラスの使い方
Mailクラスには以下のメソッドが用意されています。
- addTo(email: string, insert_code?: {[key: string]: string}): Mail
- setEncode(encode: string = 'utf-8'): Mail
- setFrom(email: string, name = ''): Mail
- setSubject(subject: string): Mail
- setText(text: string): Mail
- setHtml(html: string): Mail
- addCc(email: string): Mail
- addBcc(email: string): Mail
- addAttachment(file: Attachment): Mail
これらのメソッドを使ってメール内容を設定します。キーチェーンメソッドに対応しています。本文の __name1__
は addTo
で指定したキーワードと置き換わります。
const Mail = Blastengine.mail();
const mail = new Mail;
mail
.setFrom('from@blastengine.jp', 'Admin')
.setSubject('Test subject')
.addTo('user1@blastengine.jp', { name1: 'No 1' })
.setText('メールの本文 __name1__');
添付ファイルも利用できます。
const Mail = Blastengine.mail();
const mail = new Mail;
mail
.setFrom('from@blastengine.jp', 'Admin')
.setSubject('Test subject')
.addTo('user1@blastengine.jp', { name1: 'No 1' })
.setText('__name__さん向けのメールの本文')
.addAttachment(path.resolve('image.png'))
.addAttachment(path.resolve('document.doc'));
大量の宛先を指定した場合には、自動的にCSVアップロードが適用されます。
for (let i = 0; i < 60; i++) {
mail.addTo(`user${i}@blastengine.jp`, {name1: `User ${i}`});
}
メールの内容ができあがったら、 send
メソッドで送信を行います。
// 即時配信する場合
await mail.send();
// 時間指定を行う場合
await mail.send(new Date('2023-10-01 10:00:00'));
利点
これまでは即時配信用にはTransaction、一括配信ではBulkなど使い分ける必要がありました。そういった使い分けが不要になります。
また、一括メールの配送先が50件を超える場合にはCSVアップロードなどを使う必要がありましたが、それもSDK内で吸収していますので、配送先の数を気にせずに利用できます。
まとめ
blastengineではAPIベースの他、SMTPリレーによるメール配信も利用できます。APIの場合、大量の宛先に対する一括配信も利用できますので、ぜひSDKとともに利用してください。