GaEpd.EmailService 1.0.0

Prefix Reserved
dotnet add package GaEpd.EmailService --version 1.0.0                
NuGet\Install-Package GaEpd.EmailService -Version 1.0.0                
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="GaEpd.EmailService" Version="1.0.0" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add GaEpd.EmailService --version 1.0.0                
#r "nuget: GaEpd.EmailService, 1.0.0"                
#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.
// Install GaEpd.EmailService as a Cake Addin
#addin nuget:?package=GaEpd.EmailService&version=1.0.0

// Install GaEpd.EmailService as a Cake Tool
#tool nuget:?package=GaEpd.EmailService&version=1.0.0                

Georgia EPD-IT Email Service Library

This library was created by Georgia EPD-IT to provide common email services for our web applications.

Georgia EPD-IT .NET Test SonarCloud Quality Gate Status Lines of Code

Installation

Nuget

To install, search for "GaEpd.EmailService" in the NuGet package manager or run the following command:

dotnet add package GaEpd.EmailService

Usage

The IEmailService interface provides a single method, SendEmailAsync(Message message), which sends an email Message. Typical usage would look like this:

// Create the email message.
var message = Message.Create(subject, recipientEmail, textBody, htmlBody, senderName, senderEmail, [ccRecipient]);

// Send the message. There is no need to await this call.
_ = emailService.SendEmailAsync(message, token);

// Optionally log the message. This requires implementing the IEmailLogRepository interface.
await emailLogRepository.InsertAsync(message, token).ConfigureAwait(false);

Configuration

The AddEmailService() extension method can be used to register the included implementation with your configuration settings. The DefaultEmailService implementation uses MailKit to send emails.

builder.Services.AddEmailService(builder.Configuration);

The following configuration section should be added to your configuration file:

{
  "EmailServiceSettings": {
    "EnableEmail": true,
    "SmtpHost": "localhost",
    "SmtpPort": 25,
    "SecureSocketOption": "Auto",
    "DefaultSenderName": "Default Sender",
    "DefaultSenderEmail": "Default.Sender@email.invalid",
    "EnableEmailAuditing": true,
    "AuditEmailRecipients": [
      "Audit.Recipient@email.invalid"
    ],
    "EnableEmailLog": false
  }
}
  • EnableEmail: Set to true to enable sending emails.
  • SmtpHost: The SMTP server to use for sending emails. (Only used if EnableEmail is true.)
  • SmtpPort: The port to use for the SMTP server. (Only used if EnableEmail is true.)
  • SecureSocketOption: The MailKit SecureSocketOption to use for the SMTP server. (Only used if EnableEmail is true.) Available options are None, Auto, SslOnConnect, StartTls, and StartTlsWhenAvailable. See the MailKit documentation for a description of each option.
  • DefaultSenderName: The default sender name (optional, can also be set per message).
  • DefaultSenderEmail: The default sender email address (optional, can also be set per message).
  • EnableEmailAuditing: Set to true to enable sending audit emails (useful for testing purposes).
  • AuditEmailRecipients: A list of email addresses to send audit emails to. (Only used if EnableEmailAuditing is true.)
  • EnableEmailLog: Not used by the DefaultEmailService. This is here as a convenience if you decide to implement and use IEmailLogRepository (see below). Set to true to enable saving emails.

Note that EnableEmail, EnableEmailAuditing, and EnableEmailLog operate independently of each other. You can enable or disable each feature individually.

Email Log Repository

The IEmailLogRepository interface provides a single method, InsertAsync(Message message), for logging each email. No implementation is provided by default, so if you want to enable email logging, you will need to create your own implementation and register it with the dependency injection container. The EnableEmailLog configuration setting is available if desired to enable or disable email logging. The EmailLog class is also available for use as a database entity if desired.

Product 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. 
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.0.0 223 12/4/2024

# Changelog
## [1.0.0] - 2024-12-04
_Initial release._
[1.0.0]: https://github.com/gaepdit/email-service/releases/tag/v1.0.0