Kalo te dokumentacioni
C#

Konfigurimi

Çdo opsion i klientit, çfarë lexon nga mjedisi dhe çfarë refuzon.

Opsionet

client.cs
using var http = new HttpClient(); var client = new OpenEmailClient(new OpenEmailOptions{    ApiKey = Environment.GetEnvironmentVariable("OPENEMAIL_API_KEY"),    BaseUrl = "https://api.openemail.uk",    Timeout = TimeSpan.FromSeconds(30),    MaxRetries = 2,    HttpClient = http,    Headers = { ["X-Team"] = "billing" },}); Console.WriteLine($"{client.Mode} {client.Raw.BaseUrl}");
OpsioniÇfarë bën
ApiKeyÇelësi API i hapësirës së punës, që fillon me oe_live_ ose oe_test_.
AccessTokenNjë token aksesi OAuth, për një aplikacion që e ka lidhur një person. Jepni një çelës ose një token, jo të dy.
AccessTokenProviderNjë funksion që kthen tokenin e aksesit. Ekzekutohet para çdo kërkese, prandaj është vendi ku rinovohet një token.
BaseUrlOrigjina e API-së. Një hosti të thjeshtë si localhost:2222 i shtohet skema.
HttpClientHttpClient që aplikacioni juaj e ka tashmë, si një nga IHttpClientFactory ose një me një trajtues testi. Klienti nuk e çliron kurrë.
TimeoutSa mund të zgjasë një përpjekje. Parazgjedhja është 30 sekonda, TimeSpan.Zero e çaktivizon, dhe ngarkimet presin të paktën dhjetë minuta.
MaxRetriesSa herë riprovohet një kërkesë e dështuar. Parazgjedhja është 2, dhe 0 dërgon një herë.
UserAgentZëvendëson kokën User-Agent, që është openemail-dotnet/ dhe versioni.
HeadersKoka që i shtohen çdo kërkese.

Gjithçka që e lini jashtë lexohet nga mjedisi: OPENEMAIL_API_KEY, pastaj OPENEMAIL_ACCESS_TOKEN, dhe OPENEMAIL_BASE_URL. client.Mode tregon nëse çelësi është një çelës live apo test.

Anulimi dhe afatet kohore

Çdo metodë merr së fundi një CancellationToken. Anulimi i tij e ndal thirrjen menjëherë, bashkë me riprovimet, dhe hedh OperationCanceledException, ndërsa Timeout kufizon çdo përpjekje.

deadline.cs
using var deadline = new CancellationTokenSource(TimeSpan.FromSeconds(10)); var thread = await client.Threads.GetAsync("CAHk7pQ2x9LmZ4-mail.example.com", cancellationToken: deadline.Token); Console.WriteLine(thread["messageCount"]);

Opsionet në një thirrje

Parametrat e kërkimit dhe cilësimet e thirrjes janë argumente me emër nën emrat e API-së, si limit:, cursor: dhe idempotencyKey:. Çdo metodë merr apiKey: për të vepruar me një çelës tjetër vetëm për atë thirrje, kështu që një proces mund t'u shërbejë disa hapësirave të punës me një klient të vetëm.

another-workspace.cs
var page = await client.Emails.ListAsync(    status: new[] { "failed", "bounced" },    limit: 50,    apiKey: Environment.GetEnvironmentVariable("OTHER_WORKSPACE_KEY")); Console.WriteLine($"{page.Count} {page.HasMore}");

Tokenat e qasjes OAuth

Një aplikacion që një person e ka lidhur me OAuth mban një token aksesi në vend të një çelësi API. Jepeni si AccessToken, ose jepni AccessTokenProvider dhe rinovojeni tokenin aty kur është afër skadimit, kështu që klienti nuk ka nevojë të rindërtohet kurrë.

access-token.cs
var current = "token-from-your-oauth-flow"; var client = new OpenEmailClient(new OpenEmailOptions{    AccessTokenProvider = _ => Task.FromResult(current),}); var me = await client.Me.GetAsync(); Console.WriteLine(me["workspaceId"]);

ASP.NET Core

Regjistroni një klient të vetëm për gjithë aplikacionin. Ai nuk mban asnjë lidhje të vetën për të çliruar, prandaj singleton është jetëgjatësia e duhur.

Program.cs
using OpenEmail; var builder = WebApplication.CreateBuilder(args); builder.Services.AddSingleton(new OpenEmailClient(new OpenEmailOptions{    ApiKey = builder.Configuration["OpenEmail:ApiKey"],})); var app = builder.Build(); app.MapPost("/invoices/{number}/send", async (string number, OpenEmailClient client, CancellationToken cancellationToken) =>{    var sent = await client.Emails.SendAsync(new Body    {        ["from"] = "[email protected]",        ["to"] = "[email protected]",        ["subject"] = $"Invoice {number}",        ["text"] = "The invoice is attached.",    }, idempotencyKey: $"invoice-{number}", cancellationToken: cancellationToken);     return Results.Ok(new { id = (string?)sent["id"] });}); app.Run();

Çfarë refuzon klienti

  • Një çelës që nuk fillon me oe_live_ ose oe_test_, dhe një çelës së bashku me një token aksesi.
  • Dërgimin e një kredenciali përmes http: të thjeshtë, përveç kur serveri është në këtë makinë, te localhost, te një adresë 127.x.x.x ose te ::1.
  • Një URL bazë te 0.0.0.0, që është një adresë ku dëgjon një server. Përdorni 127.0.0.1 me të njëjtën portë.
  • Një id bosh, ose një të përbërë vetëm nga pika, të cilën një analizues URL-je do ta hiqte.
  • Ndjekjen e një ridrejtimi. Klienti HTTP që ndërton paketa nuk ndjek kurrë asnjë, kështu që një kredencial nuk udhëton kurrë te një host tjetër.

Shtypja e një klienti ose e një përjashtimi nuk shfaq kurrë një kredencial. ToString() te një klient jep modalitetin dhe URL-në e tij bazë, dhe asgjë tjetër.

Një endpoint pa metodë

client.Raw.RequestAsync() thërret çdo shteg me kredencialin, URL-në bazë, afatin kohor dhe rregullat e riprovimit të klientit. Shtegu duhet të fillojë me një / të vetme, dhe një shteg që del nga origjina e URL-së bazë refuzohet.

request.cs
var label = await client.Raw.RequestAsync("/labels", "POST", body: new Body { ["name"] = "Invoices" }); Console.WriteLine(label?["id"]);