インストール
.NET 8 以降と .NET Standard 2.0 向けの 1 つの NuGet パッケージ。.NET 8 では依存関係がありません。
インストール
現在のリリースは 0.0.1 です。TypeScript SDK のすべてのメソッドに対応するメソッドがあり、どれかが欠けたり異なるリクエストを送ったりすると、パッケージのパリティチェックがビルドを失敗させます。
dotnet add package OpenEmailusing OpenEmail; var client = new OpenEmailClient(); var sent = await client.Emails.SendAsync(new Body{ ["from"] = "Acme Billing <[email protected]>", ["to"] = "[email protected]", ["subject"] = "Your September invoice", ["html"] = "<p>Invoice attached.</p>",}); Console.WriteLine($"{sent["id"]} {sent["status"]}");new OpenEmailClient() はキーを OPENEMAIL_API_KEY から読むため、コードには資格情報が残りません。設定を別の場所で管理している場合は new OpenEmailOptions { ApiKey = ... } を渡してください。キーがない場合や形式が正しくない場合は、何も送信される前、クライアントの構築時に ArgumentException がスローされます。
リクエストボディは Body、または API の名前をそのままキーにした任意の IReadOnlyDictionary<string, object?> です。そのため scheduledAt は API リファレンスと同じように書きます。レスポンスは System.Text.Json.Nodes の JsonObject で、sent["id"] のように読み取ります。
SendAsync が戻っても、メッセージが送信済みとは限りません。スケジュール送信やキャンセル可能な送信は queued または scheduled として返り、後から確定します。呼び出しが戻ったという事実ではなく、status を読んでください。
1 つのファイルで試す
.NET 10 では、プロジェクトなしで 1 つのファイルを実行できます。#:package の行がパッケージを取得し、dotnet run send.cs がメッセージを送信します。
#:package OpenEmail@* using OpenEmail; var client = new OpenEmailClient(); var sent = await client.Emails.SendAsync(new Body{ ["from"] = "[email protected]", ["to"] = "[email protected]", ["subject"] = "Sent from one file", ["text"] = "No project was needed.",}); Console.WriteLine(sent["id"]);動作環境
パッケージは net8.0 と netstandard2.0 をターゲットにしています。.NET 8 以降では依存関係がなく、トリミングにも事前コンパイルにも安全に対応します。.NET Standard 2.0 では System.Text.Json と Microsoft.Bcl.AsyncInterfaces を取り込みます。クライアントは多数のスレッドから同時に安全に使えます。プログラムの起動時に 1 つ作り、共有してください。
クライアントはメールを送信しメールボックスを読み取れるワークスペース API キーを保持するため、置き場所はサーバー、ジョブ、または自分のマシンで動くツールです。キーは環境変数かフレームワークのシークレットに保管し、決してコードに書かないでください。