blastengineはシンプルに使える開発者向けメールサービスを提供しています。何かと面倒なメール配信をシンプルに、かつ確実に送信先へ届くようになります。
今回は今開発中のVBA用SDK(以下VBA SDK)を使って、送信したメールのログを検索する方法を解説します。
コードについて
コードは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でメール検索を行う際には LogQuery
クラスを利用してください。
検索条件
LogQueryクラスにある各種プロパティが利用できます。
Dim Query As LogQuery
Set Query = Client.LogQuery
Query.DeliveryStart = DateAdd("d", -7, Now) ' 7日前から
Query.Status(0) = SENT ' 送信済み
Query.Count = 20 ' 20件取得
検索実行
検索は Find
メソッドを使います。
Dim Results() As Log
Results = Query.Find
返却された Results
には Log
クラスの配列が入っています。
Debug.Print Results(0).DeliveryId
さらに送信履歴を取得する
さらに時間ごとの配信履歴を取得する場合には、 Histories
メソッドを使います。返却値は History
クラスの配列です。これは各メールログごとに呼び出します。
Dim Histories() As History
Histories = Results(0).Histories
Debug.Print Histories(0).DeliveryTime ' 2021-11-11T00:00:00+09:00
Debug.Print Histories(0).Status ' SENT
まとめ
送信したメールの詳細を知りたい場合には LogQuery クラスを利用してください。さらに Histories メソッドを使えば、時系列ごとに配信履歴を取得できます。
VBA SDKは、Excelなどと組み合わせてメール配信ができるようになります。ぜひご利用ください。