SplatDev.Umbraco.Plugins.Mailer
2.1.9
dotnet add package SplatDev.Umbraco.Plugins.Mailer --version 2.1.9
NuGet\Install-Package SplatDev.Umbraco.Plugins.Mailer -Version 2.1.9
<PackageReference Include="SplatDev.Umbraco.Plugins.Mailer" Version="2.1.9" />
<PackageVersion Include="SplatDev.Umbraco.Plugins.Mailer" Version="2.1.9" />
<PackageReference Include="SplatDev.Umbraco.Plugins.Mailer" />
paket add SplatDev.Umbraco.Plugins.Mailer --version 2.1.9
#r "nuget: SplatDev.Umbraco.Plugins.Mailer, 2.1.9"
#:package SplatDev.Umbraco.Plugins.Mailer@2.1.9
#addin nuget:?package=SplatDev.Umbraco.Plugins.Mailer&version=2.1.9
#tool nuget:?package=SplatDev.Umbraco.Plugins.Mailer&version=2.1.9
Mailer
Umbraco email integration plugin — send templated HTML emails from Umbraco using SMTP (MailKit) or Microsoft Graph API. Supports Umbraco 13 (net8.0) and Umbraco 17 (net10.0).
Compatibility
| Umbraco | .NET | Package Version |
|---|---|---|
| 13.x | 8.0 | 2.0.0 |
| 17.x | 10.0 | 2.0.0 |
Installation
dotnet add package SplatDev.Umbraco.Plugins.Mailer
Quick Start
Register in Program.cs:
builder.CreateUmbracoBuilder()
.AddBackOffice()
.AddWebsite()
.AddMailer() // <-- add this
.Build();
Configuration
The plugin reads SMTP settings from Umbraco's standard GlobalSettings:Smtp block in appsettings.json:
{
"Umbraco": {
"CMS": {
"Global": {
"Smtp": {
"Host": "smtp.example.com",
"Port": 587,
"Username": "noreply@example.com",
"Password": "<your-password>",
"SecureSocketOptions": "StartTls"
}
}
}
}
}
Usage
Sending Template-Based Email
Inject IEmailService<T> and call SendEmailAsync with a view-model:
using SplatDev.Umbraco.Plugins.Mailer.Models;
using SplatDev.Umbraco.Plugins.Mailer.Services;
public class OrderConfirmationHandler(IEmailService<OrderModel> emailService)
{
public async Task SendAsync()
{
var model = new EmailModel<OrderModel>
{
Subject = "Your order has shipped",
View = "~/Views/Mail/OrderConfirmation.cshtml",
From = new MailboxAddress("Shop", "noreply@example.com"),
To = new MailboxAddress("Customer", "customer@example.com"),
Model = new OrderModel { OrderId = "12345" }
};
await emailService.SendEmailAsync(model);
}
}
Testing Email Configuration
The MailerApiController exposes a test endpoint at /umbraco/backoffice/api/Mailer/SendTestAsync?email=test@example.com — sends a confirmation HTML email to verify SMTP is wired correctly.
Architecture
| Component | Role |
|---|---|
EmailService<T> |
Generates HTML from Razor views via ViewRenderService and delivers via MailKit SMTP |
MicrosoftGraphMailerService |
Sends email through Microsoft Graph API (Exchange Online) |
EmailModel<T> |
Generic container: subject, body, from/to addresses, Razor view path, domain URL |
MailerComposer |
Registers both services in DI |
Dependencies
- MailKit (SMTP delivery)
- Microsoft Graph SDK (Exchange Online delivery)
- Umbraco
GlobalSettings:Smtpconfiguration
Changelog
2.1.9 — 2026-08-24
Removes a dashboard screenshot that showed an error toast. It was captured against a site where this plugin's API was unreachable, so it advertised a broken dashboard. No screenshot is better than a misleading one; a replacement will be taken against a working install.
2.1.8 — 2026-08-24
Package metadata only: the listing now carries an icon and search tags, and the project and repository links point at the organisation that actually hosts this code. No code changes.
2.1.7 — 2026-08-21
- A failed request now says so in the dashboard. Previously the dashboard kept its previous (usually empty) state, so a refused or failed call looked identical to having no data.
2.1.6 — 2026-08-21
- Dashboard now sends the backoffice token with its API calls. On Umbraco 17 those calls were arriving unauthenticated and coming back 401, which the dashboard rendered as an empty state rather than an error.
- A failed request now raises a notification instead of leaving the dashboard looking like there is simply no data.
License
MIT © SplatDev
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | 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. |
-
net10.0
- Azure.Identity (>= 1.13.2)
- MailKit (>= 4.15.1)
- Microsoft.Extensions.FileProviders.Embedded (>= 10.0.6)
- Microsoft.Graph (>= 5.73.0)
- Microsoft.Identity.Client (>= 4.69.1)
- MimeKit (>= 4.15.1)
- SplatDev.Umbraco.Common (>= 2.0.3)
- SplatDev.Umbraco.Markup (>= 2.0.3)
- Umbraco.Cms.Api.Management (>= 17.3.4)
- Umbraco.Cms.Web.Website (>= 17.3.4)
-
net8.0
- Azure.Identity (>= 1.13.2)
- MailKit (>= 4.15.1)
- Microsoft.Extensions.FileProviders.Embedded (>= 8.0.11)
- Microsoft.Graph (>= 5.73.0)
- Microsoft.Identity.Client (>= 4.69.1)
- MimeKit (>= 4.15.1)
- SplatDev.Umbraco.Common (>= 2.0.3)
- SplatDev.Umbraco.Markup (>= 2.0.3)
- Umbraco.Cms.Web.BackOffice (>= 13.12.0)
- Umbraco.Cms.Web.Website (>= 13.12.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on SplatDev.Umbraco.Plugins.Mailer:
| Package | Downloads |
|---|---|
|
SplatDev.Umbraco.Plugins.CacheManager
Umbraco cache manager/warmer plugin supporting Umbraco 13 (net8.0) and Umbraco 17 (net10.0) |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2.1.9 | 0 | 8/24/2026 |