SplatDev.Messaging
1.1.0
dotnet add package SplatDev.Messaging --version 1.1.0
NuGet\Install-Package SplatDev.Messaging -Version 1.1.0
<PackageReference Include="SplatDev.Messaging" Version="1.1.0" />
<PackageVersion Include="SplatDev.Messaging" Version="1.1.0" />
<PackageReference Include="SplatDev.Messaging" />
paket add SplatDev.Messaging --version 1.1.0
#r "nuget: SplatDev.Messaging, 1.1.0"
#:package SplatDev.Messaging@1.1.0
#addin nuget:?package=SplatDev.Messaging&version=1.1.0
#tool nuget:?package=SplatDev.Messaging&version=1.1.0
SplatDev.Messaging
Core messaging abstractions for the SplatDev Umbraco Plugins ecosystem. Provides contracts for email sending (single and bulk), SMS messaging, and canned/template-based message generation with placeholder replacement.
Compatibility
| .NET | Umbraco | Package Version |
|---|---|---|
| 8.0 | 13 | 1.1.0 |
| 10.0 | 17 | 1.1.0 |
Installation
dotnet add package SplatDev.Messaging
Interfaces
IMessagingController<TMessage, TResult>
Core email sending contract with sync and async overloads:
public interface IMessagingController<TMessage, TResult>
{
TResult SendMessage(string subject, string from, string fromAddress,
string to, string toAddress, string message, string? plainMessage = null);
TResult SendMessage(string subject, string from, string fromAddress,
string to, string toAddress, string message, string? plainMessage,
string? cc, string? bcc);
TResult SendMessage(IAddress from, IAddress to, string subject,
string message, string? plainMessage = null);
TResult SendMessage(IAddress from, IAddress to, string subject,
string message, string? plainMessage, IBulkAddress? cc, IBulkAddress? bcc);
Task<TResult> SendMessageAsync(...);
TResult SendMessage(TMessage message);
Task<TResult> SendMessageAsync(TMessage message);
}
IBulkMessagingController<TMessage, TResult>
Bulk email sending with multiple recipients:
public interface IBulkMessagingController<TMessage, TResult>
{
IEnumerable<TResult> SendMessage(IAddress from, string subject,
string message, string? plainMessage, IEnumerable<IAddress> to);
Task<IEnumerable<TResult>> SendMessageAsync(...);
}
ISmsService
SMS sending contract:
public interface ISmsService
{
Task<SmsSendResult> SendSmsAsync(string to, string message);
}
Canned Message Templates
The library includes a template system for generating messages with placeholder replacement:
// Define placeholders
var placeholders = DefaultPlaceholders.Get(new Dictionary<string, string>
{
{ "name", "John" },
{ "email", "john@example.com" }
});
// Generate message from template
var message = CannedMessageHelpers.GenerateMessageFromTemplate(
"Hello ##NAME##, welcome to ##SITENAME##", placeholders);
Built-in placeholders
| Placeholder | Description |
|---|---|
##NAME## |
Recipient name |
##EMAIL## |
Recipient email |
##DATE## |
Current date |
##SITENAME## |
Site name |
##PAYLINK## |
Payment link |
Provider Implementations
| Package | Description |
|---|---|
SplatDev.Messaging.Mailgun |
Mailgun REST API provider |
SplatDev.Messaging.SendGrid |
SendGrid API provider |
SplatDev.Messaging.Smtp |
SMTP provider using System.Net.Mail |
SplatDev.Messaging.SocketLabs |
SocketLabs API provider |
SplatDev.Messaging.Twilio |
Twilio SendGrid provider |
SplatDev.Messaging.ClickSend |
ClickSend SMS provider |
SplatDev.Messaging.SMSTools |
SMSTools provider |
Dependencies
None. This package has zero NuGet dependencies — it defines pure abstractions and interfaces.
SplatDev.Messaging — part of the SplatDev.Umbraco.Plugins suite. Licensed under MIT. © SplatDev Ltda.
Changelog
1.1.0 — 2026-08-25
Adds the two contracts the SMS providers now share. ISmsMessagingController<TMessage, TResult> declares synchronous and async SendMessage, both taking either a message object or a plain (from, to, body) triple, and Sms is a provider-neutral message with string addresses. Calling code can now depend on this package instead of on a particular provider. Additive only — nothing existing changed.
1.0.2 — 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.
1.0.1 — 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.
1.0.0 — 2026-08-24
This package now keeps a changelog. Earlier releases predate it and are not reconstructed here — consult the repository history for those. From this version on, every release records what changed for someone using it.
| 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
- No dependencies.
-
net8.0
- No dependencies.
NuGet packages (8)
Showing the top 5 NuGet packages that depend on SplatDev.Messaging:
| Package | Downloads |
|---|---|
|
SplatDev.Messaging.Smtp
SMTP email provider for SplatDev.Messaging |
|
|
SplatDev.Messaging.Twilio
Twilio SMS provider for SplatDev.Messaging |
|
|
SplatDev.Messaging.Mailgun
Mailgun email provider for SplatDev.Messaging. Uses HttpClient directly — no third-party Mailgun SDK required. |
|
|
SplatDev.Messaging.SMSTools
SMSTools SMS provider for SplatDev.Messaging |
|
|
SplatDev.Messaging.Newsletter
Newsletter/mailing-list foundation library — interfaces, DTOs, and events. No provider implementations or external dependencies. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.1.0 | 60 | 8/25/2026 |