Nosabit.Adapters.Persistence.Mail 1.2.1

There is a newer version of this package available.
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
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Nosabit.Adapters.Persistence.Mail" Version="1.2.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Nosabit.Adapters.Persistence.Mail" Version="1.2.1" />
                    
Directory.Packages.props
<PackageReference Include="Nosabit.Adapters.Persistence.Mail" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Nosabit.Adapters.Persistence.Mail --version 1.2.1
                    
#r "nuget: Nosabit.Adapters.Persistence.Mail, 1.2.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#addin nuget:?package=Nosabit.Adapters.Persistence.Mail&version=1.2.1
                    
Install Nosabit.Adapters.Persistence.Mail as a Cake Addin
#tool nuget:?package=Nosabit.Adapters.Persistence.Mail&version=1.2.1
                    
Install Nosabit.Adapters.Persistence.Mail as a Cake Tool

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.

NuGet License: MIT

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:

  1. IOptions<IDictionary<string, AppConfigCorreoConfiguration>>: Para gestionar múltiples configuraciones de correo electrónico.

  2. Enum para selección de configuración: El parámetro KeyMail permite seleccionar qué configuración usar para cada envío.

  3. SmtpClient y MailMessage: Utiliza las clases estándar de .NET para el envío de correos.

  4. 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() y ForEachEnumerable()
  • 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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.2.6 58 4/1/2025
1.2.5 60 4/1/2025
1.2.4 459 3/25/2025
1.2.3 441 3/24/2025
1.2.2 131 3/23/2025
1.2.1 130 3/23/2025
1.2.0 131 3/23/2025
1.0.2 99 3/21/2025
1.0.1 98 3/21/2025
1.0.0 108 3/21/2025