Installation
Un seul package NuGet pour .NET 8 et versions ultérieures et pour .NET Standard 2.0, sans dépendance sur .NET 8.
Installation
La version actuelle est 0.0.1. Elle a une méthode pour chaque méthode du SDK TypeScript, et le contrôle de parité du package fait échouer la compilation quand il en manque une ou qu'elle envoie une requête différente.
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() lit la clé dans OPENEMAIL_API_KEY : le code ne contient donc aucun identifiant. Passez new OpenEmailOptions { ApiKey = ... } quand votre configuration se trouve ailleurs. Une clé absente ou mal formée lève ArgumentException à la construction du client, avant tout envoi.
Un corps de requête est un Body, ou n'importe quel IReadOnlyDictionary<string, object?>, dont les clés gardent les noms de l'API, si bien que scheduledAt s'écrit ici comme dans la référence de l'API. Une réponse est un JsonObject de System.Text.Json.Nodes, qui se lit avec sent["id"].
Le retour de SendAsync ne signifie pas que le message est parti. Un envoi planifié ou annulable revient en queued ou scheduled et se règle plus tard. Lisez status, pas le fait que l'appel a retourné.
Essayez-le dans un seul fichier
Sur .NET 10, un seul fichier s'exécute sans projet. La ligne #:package récupère le package, et dotnet run send.cs envoie le message.
#: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"]);Où il s'exécute
Le package cible net8.0 et netstandard2.0. Sur .NET 8 et versions ultérieures, il n'a aucune dépendance, et il peut être découpé et compilé à l'avance sans risque. Sur .NET Standard 2.0, il apporte System.Text.Json et Microsoft.Bcl.AsyncInterfaces. Un client peut être utilisé sans risque par de nombreux threads à la fois : construisez-en un au démarrage du programme et partagez-le.
Le client porte une clé d'API d'espace de travail capable d'envoyer du courrier et de lire la boîte : sa place est donc sur un serveur, dans un job ou dans un outil qui s'exécute sur votre propre machine. Conservez la clé dans une variable d'environnement ou dans les secrets de votre framework, jamais dans le code.