Cayaqui.MPS.Email
0.1.1
dotnet add package Cayaqui.MPS.Email --version 0.1.1
NuGet\Install-Package Cayaqui.MPS.Email -Version 0.1.1
<PackageReference Include="Cayaqui.MPS.Email" Version="0.1.1" />
<PackageVersion Include="Cayaqui.MPS.Email" Version="0.1.1" />
<PackageReference Include="Cayaqui.MPS.Email" />
paket add Cayaqui.MPS.Email --version 0.1.1
#r "nuget: Cayaqui.MPS.Email, 0.1.1"
#:package Cayaqui.MPS.Email@0.1.1
#addin nuget:?package=Cayaqui.MPS.Email&version=0.1.1
#tool nuget:?package=Cayaqui.MPS.Email&version=0.1.1
Cayaqui.MPS.Email
Servicio genérico de Email para .NET 10 con proveedores intercambiables + renderer de templates:
- Azure Communication Services (ACS) — recomendado para stacks Azure-native.
- SMTP (vía MailKit) — útil para Exchange Online, MailHog/Papercut en dev, corporativos.
- Templates Scriban cargados desde
IStorageService(convención<key>.subject.txt+<key>.html+<key>.textopcional). - Inlining CSS automático con PreMailer.Net (compatibilidad Outlook/Gmail).
Distribución propietaria — requiere contrato comercial con Cayaqui. Ver
LICENSE.txt.
Dependencia: este paquete requiere
Cayaqui.MPS.Storageregistrado (AddMpsStorage(...)) para cargar los templates.
Instalación
dotnet add package Cayaqui.MPS.Email
dotnet add package Cayaqui.MPS.Storage
Registro
// ACS con connection string
builder.Services.AddMpsStorage(opt => opt.UseAzureBlob(Configuration["Storage:ConnString"]));
builder.Services.AddMpsEmail(opt =>
opt.UseAzureCommunicationServices(
connectionString: Configuration["Acs:ConnString"]!,
defaultSender: new EmailAddress("no-reply@cayaqui.com", "MPS")));
// SMTP (Exchange Online / O365)
builder.Services.AddMpsEmail(opt =>
{
opt.DefaultFrom = new EmailAddress("no-reply@cayaqui.com", "MPS");
opt.UseSmtp("smtp.office365.com", 587, user, pass, useSsl: true);
});
Uso directo
public class NotificationService(IEmailService email)
{
public Task NotifyAsync(string userEmail)
=> email.SendAsync(new EmailMessage
{
Subject = "Tu reporte está listo",
HtmlBody = "<p>Hola, tu reporte semanal está adjunto.</p>"
}.AddTo(new EmailAddress(userEmail)));
}
Uso con templates
- Subir los templates al container (default
email-templates):
email-templates/welcome.subject.txt → "Bienvenido, {{ user.name }}"
email-templates/welcome.html → "<h1>Hola {{ user.name }}</h1>..."
email-templates/welcome.text → "Hola {{ user.name }}..." (opcional)
- Enviar:
await email.SendTemplateAsync(
templateKey: "welcome",
dataContext: new { user = new { name = "Ana" } },
message: new EmailMessage().AddTo("ana@example.com"));
Sintaxis Scriban: {{ user.name }}, {{ for item in items }}...{{ end }}, filtros | upcase, | date.to_string "dd MMM yy", etc.
Nota sobre colecciones: para iteración con
{{ for ... }}funciona mejor pasar colecciones comoDictionary<string, object>[]oIDictionary<string, object>[](Scriban maneja diccionarios nativamente). Anonymous types y POCOs anidados pueden requerir ajustarMemberRenamer/MemberFilter.
Requisitos
- .NET 10.0 o superior
Cayaqui.MPS.Storageregistrado (para templates)- Cuenta Azure Communication Services (si se usa ACS) o servidor SMTP accesible
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | 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.Communication.Email (>= 1.1.0)
- Azure.Identity (>= 1.21.0)
- Cayaqui.MPS.Storage (>= 0.1.1)
- MailKit (>= 4.16.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.7)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.7)
- Microsoft.Extensions.Options (>= 10.0.7)
- PreMailer.Net (>= 2.7.2)
- Scriban (>= 7.1.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Initial release. IEmailService with Azure Communication Services and SMTP providers, Scriban templates, PreMailer CSS inlining.