blastengineはシンプルに使える開発者向けメールサービスを提供しています。何かと面倒なメール配信をシンプルに、かつ確実に送信先へ届くようになります。
今回は今開発中のVBA用SDK(以下VBA SDK)を使って、List-Unsubscribeヘッダーを付けたメールを送信する方法を解説します。
コードについて
コードはGitHubにアップしてあります。ライセンスはMIT Licenseになります。
blastengineMania/blastengine-vba: blastengineのVBA SDKです
ユーザ登録する
blastengineにユーザ登録します。管理画面に入るためのユーザID、パスワードが手に入るので、ログインします(ユーザIDは後で使います)。
送信元ドメインのSPFを設定する
送信元として利用するドメイン(自分で持っているもの)の設定をします。これは任意のドメイン管理サービスで設定できますが、TXTレコードに以下のSPFを追加します。
txt @ v=spf1 include:spf.besender.jp ~all
APIキーを取得する
ログイン後、管理画面の右上にある設定メニューに移動します。
そして設定の中で、APIキーを取得します。
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"
メールの送信
メール送信時のクラス
blastengine VBA SDKでメール送信を行う際には、3つのクラスが利用できます。
-
Transaction:
都度配信用クラス -
Bulk:
一括配信用クラス -
Mail:
Transaction/Bulk双方を必要に応じて使い分けるクラス
基本的にはMailクラスを利用していれば問題ありません。以下のメソッド名は共通です。
List-Unsubscribe用の情報設定
List-Unsubscribeヘッダーを使う際には、 ListUnsubscribe
メソッドを使います。
Dim Mail as Mail
Set Mail = client.Mail
Dim InsertCode As Dictionary
Set InsertCode = New Dictionary
InsertCode.Add "name", "Test"
InsertCode.Add "code", "123456"
Mail.Email "user@example.jp", InsertCode
Dim ListUnsubscribe As ListUnsubscribe
ListUnsubscribe.Url = "https://example.com/unsubscribe/__code__"
ListUnsubscribe.Email = "unsubscribed+__code__@example.com?subject=unsubscribe"
Mail.ListUnsubscribe = ListUnsubscribe
ListUnsubscribe
は Url
と Email
をオプションに取ります。どちらもオプションです。__code__
は置換文字列になります。 Email
の第2引数に指定したキーで置換されます(実際には __キー__
と置換されます)。今回の例であれば、URLは https://example.com/unsubscribe/123456
、メールアドレスは unsubscribed+123456@example.com?subject=unsubscribe
になります。
メールの送信
メールの送信は send
メソッドを使います。
If Mail.Send Then
MsgBox "送信しました"
Else
MsgBox "送信に失敗しました"
End If
まとめ
List-Unsubscribeヘッダーは、Gmailのガイドライン変更に伴って、対応が必須になっている機能になります。blastengineの場合は、APIとSMTP両方でList-Unsubscribeヘッダーに対応しています。
現在はGmailのみですが、他のメールプロバイダーについても対応が進んでいくことでしょう。blastengineを使って、配信したメールを確実に受信者に届けるためにも、List-Unsubscribeヘッダーの対応を行ってください。