Mailgunner 0.2.0
dotnet add package Mailgunner --version 0.2.0
NuGet\Install-Package Mailgunner -Version 0.2.0
<PackageReference Include="Mailgunner" Version="0.2.0" />
<PackageVersion Include="Mailgunner" Version="0.2.0" />
<PackageReference Include="Mailgunner" />
paket add Mailgunner --version 0.2.0
#r "nuget: Mailgunner, 0.2.0"
#:package Mailgunner@0.2.0
#addin nuget:?package=Mailgunner&version=0.2.0
#tool nuget:?package=Mailgunner&version=0.2.0
Mailgunner
Lightweight, modern, unofficial .NET client for the Mailgun (Sinch) REST API, focused on bulk personalized email delivery.
Latest release:
0.1.1. Sending (single, templated, personalized batches), suppression lists, domain webhook management, webhook signature verification, named clients, one-click List-Unsubscribe, stream attachments and a safe-by-default send retry mode. See the changelog.
Highlights
- Modern & slim — multi-targets
net10.0,net8.0andnetstandard2.0; minimal dependency footprint (System.Text.Json,Polly.Core,Microsoft.Extensions.Http). - Resilient HTTP — built around typed
HttpClientviaIHttpClientFactorywith Polly transient-fault handling (automatic retry with backoff, on by default). - Documented & strict — nullable reference types, XML docs, and warnings-as-errors.
- Debuggable packages — deterministic builds with SourceLink and symbol packages.
Installation
dotnet add package Mailgunner
Releases are published on
v*tags; see docs/RELEASING.md.
Quickstart
For a single message, register the client with your host and resolve it from DI:
using Mailgunner;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
var builder = Host.CreateApplicationBuilder(args);
builder.Services.AddMailgunner(
"mg.example.com", builder.Configuration["Mailgun:SendingKey"]!, MailgunRegion.Us);
using var host = builder.Build();
var client = host.Services.GetRequiredService<IMailgunnerClient>();
var message = new MailgunMessage
{
From = "hello@mg.example.com",
Subject = "Hello",
Text = "Your first message from Mailgunner.",
};
message.To.Add("you@example.com");
SendResult result = await client.SendAsync(message);
Console.WriteLine(result.Id); // accepted by Mailgun; this is not a delivery confirmation
This console example also uses the Microsoft.Extensions.Hosting package. Supply the key through
configuration or Mailgun__SendingKey; use the region and sender domain configured in your account.
Documentation
Full documentation lives in the repository; every link below is absolute so it also works from the NuGet package page.
| Guide | What it covers |
|---|---|
| Getting started | Installation, registration and DI, which credential each operation needs, regions, running the sample. |
| Sending messages | Personalized batches from a stored template, attachments and per-send options, the 16KB cap, recovering batch progress. |
| Multiple named clients | Several Mailgun identities in one application, each with its own domain, key, region and retry settings. |
| Automatic retry & backoff | What is retried and what is not, SendRetryMode, Retry-After, the mandatory wait cap, tuning. |
| Suppression lists | Bounces, unsubscribes and complaints — list, get, add, remove, clear, and how paging works. |
| Webhooks | Managing domain webhook registrations, and verifying incoming webhook signatures. |
| Limitations & API coverage | Trimming/AOT, duplicate delivery, timeouts, large imports — and which Mailgun endpoints are implemented. |
| Building from source | Build and test commands, opt-in live integration tests, project layout. |
| Releasing | How a version is tagged and published. |
Changelog & license
- Changes are recorded in CHANGELOG.md (Keep a Changelog format).
- Licensed under the MIT License.
Disclaimer
Mailgunner is a community-maintained, unofficial library. It is not affiliated with, authorized by, or endorsed by Mailgun or Sinch. "Mailgun" and "Sinch" are trademarks of their respective owners.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Microsoft.Bcl.TimeProvider (>= 8.0.1)
- Microsoft.Extensions.Http (>= 8.0.1)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 8.0.0)
- Polly.Core (>= 8.7.0)
- System.Text.Json (>= 8.0.6)
-
net10.0
- Microsoft.Extensions.Http (>= 8.0.1)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 8.0.0)
- Polly.Core (>= 8.7.0)
-
net8.0
- Microsoft.Extensions.Http (>= 8.0.1)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 8.0.0)
- Polly.Core (>= 8.7.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
See the changelog: https://github.com/gberikov/Mailgunner/blob/master/CHANGELOG.md