Installation
Ein NuGet-Paket für .NET 8 und neuer sowie für .NET Standard 2.0, ohne Abhängigkeiten unter .NET 8.
Installation
Die aktuelle Version ist 0.0.1. Sie hat eine Methode für jede Methode des TypeScript-SDK, und die Paritätsprüfung des Pakets lässt den Build scheitern, wenn eine fehlt oder eine andere Anfrage sendet.
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() liest den Schlüssel aus OPENEMAIL_API_KEY, sodass der Code keine Zugangsdaten enthält. Übergeben Sie new OpenEmailOptions { ApiKey = ... }, wenn Ihre Konfiguration woanders liegt. Ein fehlender oder fehlerhafter Schlüssel löst ArgumentException aus, wenn der Client gebaut wird, bevor irgendetwas gesendet wird.
Ein Anfragekörper ist ein Body oder ein beliebiges IReadOnlyDictionary<string, object?>, dessen Schlüssel die Namen der API behalten, sodass scheduledAt hier genauso geschrieben wird wie in der API-Referenz. Eine Antwort ist ein JsonObject aus System.Text.Json.Nodes, gelesen mit sent["id"].
Dass SendAsync zurückkehrt, heißt nicht, dass die Nachricht verschickt ist. Ein geplanter oder abbrechbarer Versand kommt als queued oder scheduled zurück und steht erst später fest. Lesen Sie status, nicht die Tatsache, dass der Aufruf zurückgekehrt ist.
In einer einzigen Datei ausprobieren
Unter .NET 10 läuft eine einzelne Datei ohne Projekt. Die Zeile #:package holt das Paket, und dotnet run send.cs sendet die Nachricht.
#: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"]);Wo es läuft
Das Paket zielt auf net8.0 und netstandard2.0. Unter .NET 8 und neuer hat es keine Abhängigkeiten und lässt sich gefahrlos trimmen und vorab kompilieren. Unter .NET Standard 2.0 bringt es System.Text.Json und Microsoft.Bcl.AsyncInterfaces mit. Ein Client kann gefahrlos von vielen Threads gleichzeitig benutzt werden: Bauen Sie einen beim Programmstart und teilen Sie ihn.
Der Client trägt einen Workspace-API-Schlüssel, der Mail senden und das Postfach lesen kann. Er gehört daher auf einen Server, in einen Job oder in ein Tool, das auf Ihrem eigenen Rechner läuft. Bewahren Sie den Schlüssel in einer Umgebungsvariable oder in den Secrets Ihres Frameworks auf, nie im Code.