LoginSignup
0
0

blastengine Google Apps Script SDKでメール種別を気にせず送信できるようになりました

Posted at

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は後で使います)。

https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197026/515541ad-b74e-e1e2-ac34-46d181ee2924.jpeg

送信元ドメインのSPFを設定する

送信元として利用するドメイン(自分で持っているもの)の設定をします。これは任意のドメイン管理サービスで設定できますが、TXTレコードに以下のSPFを追加します。

txt @ v=spf1 include:spf.besender.jp ~all

APIキーを取得する

ログイン後、管理画面の右上にある設定メニューに移動します。

https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197026/47b2b2ac-2e41-77fe-d84f-0ae0b7541f36.jpeg

そして設定の中で、APIキーを取得します。

https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197026/2b5ca124-3020-1d39-84e4-911cd4db27e2.png

必要な情報について

SDKを使う上で必要なのは、先ほどのAPIキーとユーザIDになります。

ライブラリIDについて

GASのライブラリIDは 1GvJKygDvrhoq9w1FIRepBo1kAB3yo1LucHtL6CIM-KqmaFaxLUbyBdim になります。こちらをGoogle Apps Scriptのエディタにて、ライブラリとして登録してください。

1GvJKygDvrhoq9w1FIRepBo1kAB3yo1LucHtL6CIM-KqmaFaxLUbyBdim

https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197026/e7bd1386-9893-0d80-226c-d130eb912a1b.jpeg

今回はIDを Blastengine として解説します。変更している場合はそれぞれ読み替えてください。

初回実行時の注意

初回実行時には外部URL(blastengineのAPI)にアクセスを許可するダイアログが出ます。なお、この時に以下のような怖いダイアログが出ます。

https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197026/a57beb3b-5ab8-1ca1-a612-97124ce248fb.jpeg

これはインストール数が増えると消えるらしいのですが、まだ作成したばかりのため表示されてしまうようです。左下にある詳細というリンクから許諾を続行できます。

初期化

先ほど取得したユーザー名と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とともに利用してください。

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

0
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
0
0