blastengineはエンジニアフレンドリーなメール配信サービスです。APIとSMTPリレーの両方をサポートしており、手軽に素早くメール配信ができるようになっています。
今回はRuby SDKでメールの種類(即時配信、一括配信など)を気にせずに利用できるMailクラスを作成しましたので、その使い方を解説します。
コードについて
Ruby SDKはMIT Licenseのオープンソース・ソフトウェアです。リポジトリは以下にあります。
blastengineMania/blastengine-ruby
ユーザ登録する
blastengineにユーザ登録します。管理画面に入るためのユーザID、パスワードが手に入るので、ログインします(ユーザIDは後で使います)。
送信元ドメインのSPFを設定する
送信元として利用するドメイン(自分で持っているもの)の設定をします。これは任意のドメイン管理サービスで設定できますが、TXTレコードに以下のSPFを追加します。
txt @ v=spf1 include:spf.besender.jp ~all
APIキーを取得する
ログイン後、管理画面の右上にある設定メニューに移動します。
そして設定の中で、APIキーを取得します。
必要な情報について
SDKを使う上で必要なのは、先ほどのAPIキーとユーザIDになります。
インストール
インストールはgemコマンドやbundlerで行ってください。
# Gemfile
gem 'blastengine'
または
gem install blastengine
インポート
SDKをインポートします。
require "blastengine"
初期化
Blastengineを初期化します。ユーザ名とAPIキーを使います。
# 初期化
Blastengine.initialize api_key: "API_KEY", user_name: "USER_NAME"初期化
メールの種類
blastengineで利用する主なメールの種類は以下の2つになります。
メール種別 | 添付ファイル | 即時配信 | 宛先 | CC・BCC | 配信日時指定 |
---|---|---|---|---|---|
トランザクションメール | ○ | ○ | 1つ | ○ | × |
バルクメール | ○ | ○ | 複数 | × | ○ |
MailクラスではCCとBCCを指定しながら、配信日時を指定しようとするとエラーになるので注意してください。
Mailクラスの使い方
Mailクラスには以下のメソッド・プロパティが用意されています。
- メソッド
- addTo(email: string, insert_code?: Hash)
- from(email: string, name?: string)
- プロパティ
- cc: string[]
- bcc: string[]
- subject: string
- text_part: string
- encode: string
- html_part: string
- attachments: string[]
これらを使ってメール内容を設定します。本文の __(キー名)__
は addTo
で指定したキーワードと置き換わります。
mail = Blastengine::Mail.new
mail.from email: "admin@example.com", name: "Administrator"
mail.addTo email: config["to"], insert_code: { name1: "name 1" }
mail.subject = "Test email"
mail.text_part = "This is a test email __name1__"
mail.html_part = "<html><body>This is a test email __name1__</body></html>"
添付ファイルも利用できます。
mail = Blastengine::Mail.new
mail.from email: "admin@example.com", name: "Administrator"
mail.addTo email: config["to"], insert_code: { name1: "name 1" }
mail.subject = "Test email"
mail.text_part = "This is a test email __name1__"
mail.html_part = "<html><body>This is a test email __name1__</body></html>"
mail.attachments << "README.md"
mail.attachments << "image.png"
大量の宛先を指定した場合には、自動的にCSVアップロードが適用されます。
10000.times do |i|
mail.addTo email: "bulk#{i}@example.jp", insert_code: { name1: "name #{i}" }
end
メールの内容ができあがったら、 send
メソッドで送信を行います。
// 即時配信する場合
mail.send()
// 時間指定を行う場合
mail.send(Date.parse('2023-10-01 10:00:00'))
利点
これまでは即時配信用にはTransaction、一括配信ではBulkなど使い分ける必要がありました。そういった使い分けが不要になります。
また、一括メールの配送先が50件を超える場合にはCSVアップロードなどを使う必要がありましたが、それもSDK内で吸収していますので、配送先の数を気にせずに利用できます。
まとめ
blastengineではAPIベースの他、SMTPリレーによるメール配信も利用できます。APIの場合、大量の宛先に対する一括配信も利用できますので、ぜひSDKとともに利用してください。