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のC# SDKを使って大量のメール配信を行うには

Last updated at Posted at 2024-11-13

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

現在、C#向けに、blastengine SDKを開発しています。.NET6以上を対象としているので、macOSを含め幅広い環境で実行できるはずです。

今回は、バルクメール(一括配信メール)でCSVインポートを行う方法を解説します。

ユーザ登録する

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

送信元ドメインの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はNuGetでリリースしています。Visual StudioのNuGetパッケージの管理よりインストールしてください。

NuGet Gallery | Blastengine

初期化

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

new Blastengine.Client("YOUR_USER_ID", "YOUR_API_KEY");

メールオブジェクトの作成

メールを大量に配信する場合には、バルクメールオブジェクトを作成します。

var bulk = new Blastengine.Bulk();

必要な情報をセットする

続けて、必要な情報をセットします(トランザクションメールも同様に)。

bulk.Subject = "テストメール from C#";
bulk.TextPart = "これはテストメールです to __name__";
bulk.HtmlPart = "<h1>これはテストメールです to __name__</h1>";
bulk.From = new Blastengine.From("info@example.com", "Admin");

添付ファイルを追加する

添付ファイルは Attachments プロパティにファイルのパスをセットします。

bulk.Attachments.Add("path/to/file1.txt");
bulk.Attachments.Add("path/to/file2.txt");

保存する

バルクメールの場合は、 Begin メソッドを使って一度保存します。

var bol1 = await bulk.Begin();

宛先データをインポートする

大量の宛先の場合は、データをインポートします。CSVファイルのパスを指定するか、ByteArrayContentで指定します。

var job = await bulk.Import("path/to/csvfile.csv");

ステータスチェック

インポートは非同期処理で行われます。返却値の job を使って、ステータスをチェックします。

while (!(await job.Finished()))
{
	await Task.Delay(5000); // 5秒待つ
}

エラーチェック

インポート処理が完了後、エラーの有無を確認します。 GetError で返ってくるデータは、エラーデータのCSVを変換したものになります。

if (job.IsError())
{
	// エラーあり
	var errors = await job.GetError();
	// エラー内容を確認
	errors[0]["エラーメッセージ"] // エラーメッセージ
	errors[0]["email"] // メールアドレス
}

送信する

送信は Send メソッドを使います。引数として、配信予定日時を指定できます。

// 即時配信
var res = await bulk.Send();
// 予約配信(10分後)
var res = await bulk.Send(DateTime.Now.AddMinutes(10));

コードについて

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

blastengineMania/blastengine-csharp: blastengineのC# SDKです

まとめ

blastengineには、他にも1クリックでの購読停止機能や、Webhookなどの仕組みがあります。他の機能も随時実装していきますので、ぜひ皆さんのシステム開発に役立ててください。

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

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?