blastengine(ブラストエンジン)はシンプルに使える開発者向けメールサービスを提供しています。何かと面倒なメール配信をシンプルに、かつ確実に送信先へメールを届けられます。
現在、C#向けに、blastengine SDKを開発しています。.NET6以上を対象としているので、macOSを含め幅広い環境で実行できるはずです。
今回は、メールの配信ログを取得する方法を解説します。
ユーザ登録する
blastengineにユーザ登録します。管理画面に入るためのユーザID、パスワードが手に入るので、ログインします(ユーザIDは後で使います)。
送信元ドメインのSPFを設定する
送信元として利用するドメイン(自分で持っているもの)の設定をします。これは任意のドメイン管理サービスで設定できますが、TXTレコードに以下のSPFを追加します。
txt @ v=spf1 include:spf.besender.jp ~all
APIキーを取得する
ログイン後、管理画面の右上にある設定メニューに移動します。
そして設定の中で、APIキーを取得します。
必要な情報について
SDKを使う上で必要なのは、先ほどのAPIキーとユーザIDになります。
SDKのインストール
SDKはNuGetでリリースしています。Visual StudioのNuGetパッケージの管理よりインストールしてください。
初期化
先ほどのAPIキーとユーザIDを使って初期化します。
new Blastengine.Client("YOUR_USER_ID", "YOUR_API_KEY");
レポートオブジェクトの作成
メールのログを取得する際には、レポートオブジェクトを作成します。引数はメールの配信ID(Delivery ID)です。
var report = new Blastengine.Report(2885);
ジョブを取得する
続いて、ジョブを取得します。ジョブは非同期で行われるので、完了するまで待ちます。
var report = new Blastengine.Report(2852);
var job = await report.Get();
while (!(await job.Finished()))
{
await Task.Delay(5000);
}
レポートを取得する
ジョブが完了したら、レポートを取得します。
var res = await job.GetReport();
レポートはCSVとして送られるので、 res は List<Dictionary<string, string>>
になります。
foreach (var dict in res)
{
foreach (var kvp in dict)
{
Console.WriteLine($" {kvp.Key}: {kvp.Value}");
}
Console.WriteLine();
}
結果は以下のようになります。
配信ID: 2852
配信日時: 2024/11/12 15:27:45
メールアドレス: test1@example.com
開封日時: 2024/11/12 15:27:46
配信ID: 2852
配信日時: 2024/11/12 15:27:45
メールアドレス: test2@example.com
開封日時: 2024/11/12 15:27:46
コードについて
コードはGitHubにアップしてあります。ライセンスはMIT Licenseになります。
blastengineMania/blastengine-csharp: blastengineのC# SDKです
まとめ
blastengineには、他にも1クリックでの購読停止機能や、Webhookなどの仕組みがあります。他の機能も随時実装していきますので、ぜひ皆さんのシステム開発に役立ててください。