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

blastengineのVBA SDKを使って一括配信メール(CSVアップロード)を行う

Last updated at Posted at 2024-07-22

blastengine(ブラストエンジン)はシンプルに使える開発者向けメールサービスを提供しています。何かと面倒なメール配信をシンプルに、かつ確実に送信先へ届けられます。

現在、VBA向けのblastengine SDKを開発しています。Excelを利用していますが、Accessなどでも使えるはずです。この記事では、その使い方を解説します。今回は一回の宛先数が50通を超える場合の一括配信メールの送信方法を解説します。

ユーザ登録する

blastengineにユーザ登録します。管理画面に入るためのユーザID、パスワードが手に入るので、ログインします(ユーザIDは後で使います)。

image.png

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

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

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

APIキーを取得する

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

getting-started-6.jpg

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

getting-started-5.png

必要な情報について

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

SDKのインストール

SDKは リリースページでマクロ付きExcelファイルをダウンロードするか、リポジトリの内容をvbacでコンパイルしてください。

blastengineMania/blastengine-vba: blastengineのVBA SDKです

参照設定について

VBAエディタで、ツール > 参照設定 から、以下の参照設定を追加してください。

  • Microsoft ActiveX Data Objects 6.1 Library
  • Microsoft XML, v6.0

※ 将来的には、参照設定を不要にする予定です。

初期化

先ほどのAPIキーとユーザIDを使って初期化します。

Dim client As new Blastengine
client.ApiKey = "YOUR_API_KEY"
client.UserId = "YOUR_USER_NAME"

バルクオブジェクトの作成

メールを一括配信する際にはバルクオブジェクトを使います。

Dim Bulk As Bulk
Set Bulk = client.Bulk

必要な情報をセットする

続けて、バルクオブジェクトに必要なオブジェクトをセットします。

Bulk.From "info@example.com", "Admin" ' 2つ目の引数(名前)は省略可能
Bulk.Subject = "テストメール"
Bulk.TextPart = "これはテストメールです to __name__"

' 以下は任意
Bulk.HtmlPart = "<h1>これはテストメールです to __name__</h1>" ' HTMLメール
' List-Unsubscribeの設定
Dim dicListUnsubscribe As Dictionary
Set dicListUnsubscribe = New Dictionary
dicListUnsubscribe.Add "url", "https://example.com/unsubscribe/__name__" ' 退会URL(任意)
dicListUnsubscribe.Add "mail", "unsubscribe__name__@example.com" ' 退会メールアドレス(任意)
Bulk.ListUnsubscribe = dicListUnsubscribe

そして、この内容を一旦保存します。

If Bulk.Begin then
	' 保存成功
Else
	' 保存失敗
	' Bulk.Error でDirectory型のエラーメッセージ
	Debug.Print JsonConverter.ConvertToJson(Bulk.Error)
End if

宛先を追加する

次に宛先を追加します。50の宛先を超えると、CSVアップロードが必要になります。

Dim i as Long
Dim InsertCode as new Dictionary
For i = 0 To 50
	InsertCode.Add "name", "User " & i
	Bulk.Email "user" & i & "@example.jp", InsertCode ' InsertCodeはオプションです
Next i

宛先を追加したら、インポートします。そして、インポートが完了するまで待ちます。

If Bulk.Import Then
	' 更新成功
	While Bulk.Job.Finished = False
		Application.Wait (Now + TimeValue("0:00:01"))
	Wend
Else
	' 保存失敗
	' Bulk.Error でDirectory型のエラーメッセージ
End if

メールを送信する

後は Send メソッドでメールを送信します。引数なしで、即送信されます。

If Bulk.Send Then
	' 送信成功
Else
	' 送信失敗
	' Bulk.Error でDirectory型のエラーメッセージ
End if

時間を指定する場合には、Date型を引数として適用します。

Dim dtDate as Date
dtDate = DateAdd("n", 5, Now) ' 5分後に送信
If Bulk.Send(dtDate) Then
	' 送信成功
Else
	' 送信失敗
	' Bulk.Error でDirectory型のエラーメッセージ
End if

送信成功した場合は Bulk.DeliveryId に送信IDが入ります。失敗した場合には Bulk.Error にエラー情報が入ります。これはエラー内容がDictionary型で入っています。

Debug.Print JsonConverter.ConvertToJson(Bulk.Error)

コードについて

コードはGitHubにアップしてあります。ライセンスはMIT Licenseになります。

blastengineMania/blastengine-vba: blastengineのVBA SDKです

まとめ

blastengineには他にも即時送信メールを使ったり、ListUnsubscribeヘッダー機能などもあります。これらの機能も随時実装していきますので、ぜひ皆さんのシステム開発に役立ててください。

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

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?