Soenneker.Validators.Email.Disposable
4.0.4629
Prefix Reserved
dotnet add package Soenneker.Validators.Email.Disposable --version 4.0.4629
NuGet\Install-Package Soenneker.Validators.Email.Disposable -Version 4.0.4629
<PackageReference Include="Soenneker.Validators.Email.Disposable" Version="4.0.4629" />
<PackageVersion Include="Soenneker.Validators.Email.Disposable" Version="4.0.4629" />
<PackageReference Include="Soenneker.Validators.Email.Disposable" />
paket add Soenneker.Validators.Email.Disposable --version 4.0.4629
#r "nuget: Soenneker.Validators.Email.Disposable, 4.0.4629"
#:package Soenneker.Validators.Email.Disposable@4.0.4629
#addin nuget:?package=Soenneker.Validators.Email.Disposable&version=4.0.4629
#tool nuget:?package=Soenneker.Validators.Email.Disposable&version=4.0.4629
Soenneker.Validators.Email.Disposable
Checks email domains against a packaged disposable/temporary-domain list without making network requests.
Installation
dotnet add package Soenneker.Validators.Email.Disposable
Registration
using Soenneker.Validators.Email.Disposable.Registrars;
services.AddEmailDisposableValidatorAsSingleton();
Singleton registration is recommended because the domain file is loaded lazily into a HashSet once per validator instance. Scoped registration is available but reloads the data for each scope that uses the validator.
Validate an email
using Soenneker.Validators.Email.Disposable.Abstract;
bool accepted = await validator.Validate(
"person@example.com",
cancellationToken: cancellationToken);
The result is false when the input is blank, does not contain non-empty text on both sides of its last @, or its extracted domain is present in the packaged list. It returns true when the domain is not listed.
This is not email syntax validation. For example, the domain is obtained from the text after the last @; no mailbox grammar, internationalized-domain normalization, or deliverability check is performed. Combine it with a syntax validator when accepting user addresses.
Validate a domain directly
bool accepted = await validator.ValidateDomain(
"mailinator.com",
cancellationToken: cancellationToken);
Matching is case-insensitive and exact. A parent domain match does not automatically reject a subdomain, and input is not trimmed or converted from Unicode to Punycode. Normalize domains before calling when those behaviors are required.
Data and failure behavior
The list comes from the installed Soenneker.Data.Email.Disposables package and is not refreshed over the network at runtime. Updating the application dependency is what updates the packaged data. A true result means only “not present in this list”; providers can appear, disappear, or evade list-based detection.
The first validation loads the resource file. Missing-resource and file-read failures propagate, as does cancellation during that load.
Set log: true only when it is acceptable to write the matched email address or domain to logs. Blank-input warnings are logged regardless of that flag. Email addresses are personal data in many environments, so prefer direct-domain validation or leave match logging disabled unless operationally necessary.
The validator implements synchronous and asynchronous disposal for its lazy resource holder. Dependency injection disposes registered instances automatically.
| 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. |
-
net10.0
- Soenneker.Data.Email.Disposables (>= 4.0.1055)
- Soenneker.Extensions.Enumerable.String (>= 4.0.1431)
- Soenneker.Utils.Paths.Resources (>= 4.0.229)
- Soenneker.Utils.String (>= 4.0.3170)
- Soenneker.Validators.Validator (>= 4.0.737)
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 |
|---|---|---|
| 4.0.4629 | 0 | 9/1/2026 |
| 4.0.4628 | 0 | 9/1/2026 |
| 4.0.4627 | 0 | 9/1/2026 |
| 4.0.4626 | 0 | 8/31/2026 |
| 4.0.4625 | 0 | 8/31/2026 |
| 4.0.4624 | 30 | 8/31/2026 |
| 4.0.4623 | 24 | 8/31/2026 |
| 4.0.4622 | 25 | 8/31/2026 |
| 4.0.4621 | 31 | 8/31/2026 |
| 4.0.4620 | 32 | 8/31/2026 |
| 4.0.4619 | 43 | 8/31/2026 |
| 4.0.4617 | 31 | 8/31/2026 |
| 4.0.4616 | 33 | 8/31/2026 |
| 4.0.4614 | 40 | 8/30/2026 |
| 4.0.4613 | 37 | 8/30/2026 |
| 4.0.4612 | 39 | 8/30/2026 |
| 4.0.4611 | 43 | 8/30/2026 |
| 4.0.4610 | 49 | 8/30/2026 |
| 4.0.4609 | 35 | 8/30/2026 |
| 4.0.4608 | 34 | 8/30/2026 |
Updated NuGet packages