0
1

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

Posted at

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

今回はRuby SDKでメールの種類(即時配信、一括配信など)を気にせずに利用できるMailクラスを作成しましたので、その使い方を解説します。

コードについて

Ruby SDKはMIT Licenseのオープンソース・ソフトウェアです。リポジトリは以下にあります。

blastengineMania/blastengine-ruby

ユーザ登録する

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になります。

インストール

インストールは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とともに利用してください。

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

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