Nosabit.Adapters.Persistence.Mail
1.2.1
See the version list below for details.
dotnet add package Nosabit.Adapters.Persistence.Mail --version 1.2.1
NuGet\Install-Package Nosabit.Adapters.Persistence.Mail -Version 1.2.1
<PackageReference Include="Nosabit.Adapters.Persistence.Mail" Version="1.2.1" />
<PackageVersion Include="Nosabit.Adapters.Persistence.Mail" Version="1.2.1" />
<PackageReference Include="Nosabit.Adapters.Persistence.Mail" />
paket add Nosabit.Adapters.Persistence.Mail --version 1.2.1
#r "nuget: Nosabit.Adapters.Persistence.Mail, 1.2.1"
#addin nuget:?package=Nosabit.Adapters.Persistence.Mail&version=1.2.1
#tool nuget:?package=Nosabit.Adapters.Persistence.Mail&version=1.2.1
Nosabit.Adapters.Persistence.Mail
Implementación de servicios de correo electrónico para aplicaciones .NET basada en las abstracciones de Nosabit.Adapters.Persistence.Mail.Abstractions. Proporciona un servicio completo para enviar correos con múltiples configuraciones SMTP.
Instalación
Package Manager
Install-Package Nosabit.Adapters.Persistence.Mail
.NET CLI
dotnet add package Nosabit.Adapters.Persistence.Mail
Características principales
- Implementación completa de IMailService: Proporciona una implementación de las abstracciones definidas en Nosabit.Adapters.Persistence.Mail.Abstractions
- Configuración múltiple: Soporta diferentes configuraciones de correo electrónico seleccionables mediante enumeraciones
- Soporte para HTML: Envía correos con contenido HTML formateado
- Adjuntos: Permite incluir archivos adjuntos en los correos
- Destinatarios múltiples: Envía a uno o varios destinatarios
- Copias (CC): Posibilidad de agregar destinatarios en copia
- Integración con ASP.NET Core: Método de extensión para configuración rápida en aplicaciones web
- Personalización del remitente: Configura nombre y dirección de correo del remitente
Configuración
1. Definir configuraciones en appsettings.json
Agrega una sección para las configuraciones de correo en tu archivo appsettings.json:
{
"CorreoConfiguration": {
"Main": {
"Email": "usuario@tudominio.com",
"Password": "tu-contraseña",
"EmailFake": "no-reply@tudominio.com",
"EmailName": "Tu Nombre de Empresa",
"SmtpServer": "smtp.tudominio.com",
"SmtpPort": 587,
"SmtpTargetName": "STARTTLS/smtp.tudominio.com"
},
"Support": {
"Email": "soporte@tudominio.com",
"Password": "otra-contraseña",
"EmailFake": "soporte@tudominio.com",
"EmailName": "Soporte Técnico",
"SmtpServer": "smtp.tudominio.com",
"SmtpPort": 587,
"SmtpTargetName": "STARTTLS/smtp.tudominio.com"
}
}
}
Cada configuración debe incluir:
- Email: Dirección de correo utilizada para autenticación SMTP
- Password: Contraseña para autenticación SMTP
- EmailFake: Dirección de correo mostrada como remitente (puede ser diferente del email de autenticación)
- EmailName: Nombre mostrado como remitente
- SmtpServer: Servidor SMTP
- SmtpPort: Puerto del servidor SMTP
- SmtpTargetName: Nombre del objetivo para SSL/TLS (normalmente STARTTLS/nombre-del-servidor)
2. Configurar en Program.cs
var builder = WebApplication.CreateBuilder(args);
// Agregar servicio de correo con la configuración predeterminada
builder.AddMailService();
// O especificar una ruta de configuración y clave predeterminada diferentes
builder.AddMailService(
configSectionPath: "MiConfigPersonalizada",
DefaultKey: "ConfigPrincipal"
);
var app = builder.Build();
// Resto de la configuración...
3. Definir enumeraciones para seleccionar configuraciones
// Define tus configuraciones como enum
public enum EmailConfiguration
{
Main,
Support
}
Uso básico
Enviar un correo simple
public class NotificationService
{
private readonly IMailService _mailService;
public NotificationService(IMailService mailService)
{
_mailService = mailService;
}
public bool SendWelcomeEmail(string userEmail, string userName)
{
string subject = "Bienvenido a nuestra plataforma";
string body = $@"
<html>
<body>
<h2>¡Hola {userName}!</h2>
<p>Gracias por registrarte en nuestra plataforma.</p>
<p>Esperamos que disfrutes de todos nuestros servicios.</p>
</body>
</html>";
return _mailService.Enviar(subject, body, userEmail);
}
}
Enviar con configuración específica
public bool SendSupportTicketConfirmation(string userEmail, string ticketId)
{
string subject = $"Nuevo ticket de soporte #{ticketId}";
string body = $@"
<html>
<body>
<h2>Ticket de soporte creado</h2>
<p>Su ticket #{ticketId} ha sido registrado.</p>
<p>Un agente de soporte se pondrá en contacto con usted pronto.</p>
</body>
</html>";
return _mailService.Enviar(
subject,
body,
userEmail,
UseMail: EmailConfiguration.Support
);
}
Enviar con adjuntos
public bool SendInvoice(string customerEmail, string invoiceNumber, byte[] pdfContent)
{
// Crear adjunto desde el contenido del PDF
using var stream = new MemoryStream(pdfContent);
var attachment = new Attachment(stream, $"Factura-{invoiceNumber}.pdf", "application/pdf");
var attachments = new List<Attachment> { attachment };
string subject = $"Factura #{invoiceNumber}";
string body = $@"
<html>
<body>
<h2>Factura generada</h2>
<p>Adjunto encontrará su factura #{invoiceNumber}.</p>
<p>Gracias por su compra.</p>
</body>
</html>";
return _mailService.Enviar(
subject,
body,
customerEmail,
attachments: attachments
);
}
Enviar a múltiples destinatarios
public bool SendTeamNotification(List<string> teamEmails, string message)
{
// Convertir lista de correos a MailAddress[]
var recipients = teamEmails.Select(email => new MailAddress(email)).ToArray();
string subject = "Notificación de equipo";
string body = $@"
<html>
<body>
<h2>Mensaje para el equipo</h2>
<p>{message}</p>
</body>
</html>";
return _mailService.Enviar(
subject,
body,
recipients
);
}
Enviar con copia (CC)
public bool SendOrderConfirmation(string customerEmail, string managerEmail, string orderNumber)
{
string subject = $"Confirmación de orden #{orderNumber}";
string body = $@"
<html>
<body>
<h2>Su orden ha sido confirmada</h2>
<p>Gracias por su compra. Su orden #{orderNumber} ha sido procesada.</p>
</body>
</html>";
return _mailService.Enviar(
subject,
body,
customerEmail,
CopyEmail: managerEmail
);
}
Cómo funciona internamente
La implementación del MailService
utiliza:
IOptions<IDictionary<string, AppConfigCorreoConfiguration>>: Para gestionar múltiples configuraciones de correo electrónico.
Enum para selección de configuración: El parámetro
KeyMail
permite seleccionar qué configuración usar para cada envío.SmtpClient y MailMessage: Utiliza las clases estándar de .NET para el envío de correos.
Configuración de remitente separada: Permite configurar una dirección de correo para autenticación y otra como remitente visible.
Dependencias
- Nosabit.Core: Proporciona extensiones útiles como
HasValue()
yForEachEnumerable()
- Nosabit.Adapters.Persistence.Mail.Abstractions: Define la interfaz
IMailService
que este paquete implementa - Microsoft.Extensions.Options: Para la configuración basada en opciones
- System.Net.Mail: Para las funcionalidades de envío de correo electrónico
Requisitos
- .NET 6.0 o superior
- Acceso a un servidor SMTP para el envío de correos
Licencia
Este proyecto está licenciado bajo la Licencia MIT.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net9.0 is compatible. 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. |
-
net9.0
- Nosabit.Adapters.Persistence.Mail.Abstractions (>= 1.2.0)
- Nosabit.Core (>= 1.2.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.