MailVolt.AutoConfigure 0.1.0-preview.1

This is a prerelease version of MailVolt.AutoConfigure.
dotnet add package MailVolt.AutoConfigure --version 0.1.0-preview.1
                    
NuGet\Install-Package MailVolt.AutoConfigure -Version 0.1.0-preview.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="MailVolt.AutoConfigure" Version="0.1.0-preview.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="MailVolt.AutoConfigure" Version="0.1.0-preview.1" />
                    
Directory.Packages.props
<PackageReference Include="MailVolt.AutoConfigure" />
                    
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 MailVolt.AutoConfigure --version 0.1.0-preview.1
                    
#r "nuget: MailVolt.AutoConfigure, 0.1.0-preview.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.
#:package MailVolt.AutoConfigure@0.1.0-preview.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=MailVolt.AutoConfigure&version=0.1.0-preview.1&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=MailVolt.AutoConfigure&version=0.1.0-preview.1&prerelease
                    
Install as a Cake Tool

MailVolt

Modern .NET email library. Drop-in replacement for FluentEmail.

Why MailVolt?

FluentEmail Problem MailVolt Solution
Abandoned since 2022 Actively maintained
No async API Async-only from day one
No DI-first design DI-first with MailVoltBuilder
No batch sending IBatchEmailSender with concurrency control
No SendGrid inline images Supported
No Mailgun ReplyTo Fixed
No test helpers InMemorySender + FluentAssertions
RazorLight dependency Native ASP.NET Core Razor

Quick Start (AutoConfigure)

dotnet add package MailVolt.AutoConfigure
{
  "MailVolt": {
    "From": { "Address": "noreply@example.com", "DisplayName": "My App" },
    "Transport": "Smtp",
    "Templates": "Razor",
    "Smtp": {
      "Host": "smtp.mailtrap.io",
      "Port": 587,
      "Username": "USER",
      "Password": "PASS"
    }
  }
}
// Program.cs — one line, everything from config
builder.Services.AddMailVolt(builder.Configuration);

Switch providers without changing code — just update Transport in config and add the matching section. Supports: Smtp · SendGrid · Mailgun · Resend · Postmark · Azure · Brevo · AwsSes · InMemory

Quick Start

// 1. Install
// dotnet add package MailVolt.Core
// dotnet add package MailVolt.Transport.Smtp

// 2. Register
services.AddMailVolt()
    .UseSmtpTransport(options =>
    {
        options.Host = "smtp.example.com";
        options.Username = "user";
        options.Password = "pass";
    });

// 3. Send
var builder = services.GetRequiredService<IEmailBuilder>();
var result = await builder
    .From("sender@example.com")
    .To("recipient@example.com")
    .Subject("Hello from MailVolt!")
    .HtmlBody("<h1>Welcome!</h1>")
    .SendAsync();

Installation

Package Command
Core dotnet add package MailVolt.Core
MailVolt.AutoConfigure Zero-code setup — configure everything via appsettings.json
Testing dotnet add package MailVolt.Testing
Templates: Razor dotnet add package MailVolt.Templates.Razor
Templates: Liquid dotnet add package MailVolt.Templates.Liquid
Templates: Handlebars dotnet add package MailVolt.Templates.Handlebars

Senders

Provider Package Docs
SMTP (MailKit) MailVolt.Transport.Smtp docs
SendGrid MailVolt.Transport.SendGrid docs
Mailgun MailVolt.Transport.Mailgun docs
Resend MailVolt.Transport.Resend docs
Postmark MailVolt.Transport.Postmark docs
Azure Email MailVolt.Transport.AzureEmail docs
Brevo MailVolt.Transport.Brevo docs
AWS SES MailVolt.Transport.AwsSes docs

Templates

Engine Package Docs
Razor (.cshtml) MailVolt.Templates.Razor docs
Liquid MailVolt.Templates.Liquid docs
Handlebars MailVolt.Templates.Handlebars docs

Batch Sending

var batchSender = services.GetRequiredService<IBatchEmailSender>();

var result = await batchSender.SendBatchAsync(emails, new BatchSendOptions
{
    MaxConcurrency = 10,
    FailureStrategy = FailureStrategy.Continue
});

Console.WriteLine($"Sent {result.SentCount}/{result.TotalCount}");

Testing

// Arrange
services.AddMailVolt().UseInMemoryTransport();
var sender = services.GetRequiredService<InMemorySender>();

// Act
await service.SendEmailAsync();

// Assert
sender.Should().HaveCount(1);
sender.Should().ContainEmailTo("user@example.com");
sender.Should().ContainSubject("Welcome!");

Documentation

License

MIT

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.  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.  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. 
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
0.1.0-preview.1 19 6/18/2026