OutWit.Shared.Email.Provider.Null
1.1.0
dotnet add package OutWit.Shared.Email.Provider.Null --version 1.1.0
NuGet\Install-Package OutWit.Shared.Email.Provider.Null -Version 1.1.0
<PackageReference Include="OutWit.Shared.Email.Provider.Null" Version="1.1.0" />
<PackageVersion Include="OutWit.Shared.Email.Provider.Null" Version="1.1.0" />
<PackageReference Include="OutWit.Shared.Email.Provider.Null" />
paket add OutWit.Shared.Email.Provider.Null --version 1.1.0
#r "nuget: OutWit.Shared.Email.Provider.Null, 1.1.0"
#:package OutWit.Shared.Email.Provider.Null@1.1.0
#addin nuget:?package=OutWit.Shared.Email.Provider.Null&version=1.1.0
#tool nuget:?package=OutWit.Shared.Email.Provider.Null&version=1.1.0
OutWit.Shared.Email.Provider.Null
Zero-configuration fallback email plugin for OutWit hosts. Lets a host start with a working email pipeline before the operator has signed up for any real provider account. Implements IEmailTransport via IEmailProviderPlugin.
Modes
| Mode | Behavior | Use case |
|---|---|---|
LogOnly (default) |
Logs To, Subject and the first line of the body at Warning level, then returns success. The operator can copy a password-reset / verify link straight from the logs. |
Dev, staging, first-deploy walkthrough. |
Drop |
Logs an error and returns EmailFailureKind.Permanent. Flows that depend on email surface the failure cleanly via the host's EmailFailureTracker / health check. |
Production deployments that genuinely don't need outbound email (e.g. corporate SSO-only WitIdentity). |
Configuration
The plugin reads its own appsettings.json inside its module folder:
{
"Null": {
"Mode": "LogOnly"
}
}
Override via env var:
Null__Mode=Drop
Installation
In the host:
dotnet add package OutWit.Shared.Email.Provider.Null
…then in the host's Startup/Program.cs:
var loader = new WitPluginLoader<IEmailProviderPlugin>(
Path.Combine(AppContext.BaseDirectory, "@Email"));
loader.Load();
foreach (var plugin in loader.Plugins)
plugin.Initialize(services);
The plugin's package brings a build/.targets file that auto-copies null.module/ into your output @Email/ folder at build/publish time. The loader picks it up at runtime. Each plugin category (@Email/, @Logging/, @Database/) gets its own root so different loaders don't interfere.
License
Apache 2.0 — see LICENSE.
| 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. |
This package has no dependencies.
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.1.0 | 166 | 5/13/2026 |