문서로 건너뛰기
C#

설치

.NET 8 이상과 .NET Standard 2.0용 하나의 NuGet 패키지이며, .NET 8에서는 종속성이 없습니다.

설치

현재 릴리스는 0.0.1입니다. TypeScript SDK의 모든 메서드에 대응하는 메서드가 있으며, 하나라도 빠지거나 다른 요청을 보내면 패키지의 패리티 검사가 빌드를 실패시킵니다.

dotnet add package OpenEmail
Program.cs
using 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를 읽으세요.

파일 하나로 사용해 보기

.NET 10에서는 파일 하나가 프로젝트 없이 실행됩니다. #:package 줄이 패키지를 가져오고, dotnet run send.cs가 메시지를 보냅니다.

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를 함께 가져옵니다. 클라이언트는 여러 스레드에서 동시에 안전하게 쓸 수 있습니다. 프로그램이 시작될 때 하나를 만들어 공유하세요.

클라이언트는 메일을 보내고 메일함을 읽을 수 있는 워크스페이스 API 키를 들고 있으므로, 서버나 작업, 또는 자신의 컴퓨터에서 실행되는 도구에 두어야 합니다. 키는 환경 변수나 프레임워크의 시크릿에 보관하고, 절대 코드에 넣지 마세요.