Soenneker.Validators.Email.Disposable.Online
4.0.5508
Prefix Reserved
See the version list below for details.
dotnet add package Soenneker.Validators.Email.Disposable.Online --version 4.0.5508
NuGet\Install-Package Soenneker.Validators.Email.Disposable.Online -Version 4.0.5508
<PackageReference Include="Soenneker.Validators.Email.Disposable.Online" Version="4.0.5508" />
<PackageVersion Include="Soenneker.Validators.Email.Disposable.Online" Version="4.0.5508" />
<PackageReference Include="Soenneker.Validators.Email.Disposable.Online" />
paket add Soenneker.Validators.Email.Disposable.Online --version 4.0.5508
#r "nuget: Soenneker.Validators.Email.Disposable.Online, 4.0.5508"
#:package Soenneker.Validators.Email.Disposable.Online@4.0.5508
#addin nuget:?package=Soenneker.Validators.Email.Disposable.Online&version=4.0.5508
#tool nuget:?package=Soenneker.Validators.Email.Disposable.Online&version=4.0.5508
Soenneker.Validators.Email.Disposable.Online
Downloads a disposable-domain list once and checks email domains against it without sending email addresses to the source.
Install
dotnet add package Soenneker.Validators.Email.Disposable.Online
Registration
using Soenneker.Validators.Email.Disposable.Online.Registrars;
using Microsoft.Extensions.DependencyInjection;
services.AddEmailDisposableOnlineValidatorAsSingleton();
Only singleton registration is provided. The validator owns one lazily initialized domain set and a named client entry in the shared HTTP client cache.
Configure the list source
{
"Validators": {
"Email": {
"Disposable": {
"Uri": "https://example.test/disposable-domains.json"
}
}
}
}
The endpoint must return a JSON array of domain strings. When the setting is absent, the validator uses the disposable/disposable-email-domains domains.json file on GitHub. The URI is application configuration and should not be populated directly from request input.
Warm up and validate
using Soenneker.Validators.Email.Disposable.Online.Abstract;
await validator.WarmUp(cancellationToken);
bool? accepted = await validator.Validate(
"person@example.com",
cancellationToken);
Warm-up is optional; the first validation downloads the same data if needed. The download is cached for the lifetime of the validator and is not periodically refreshed.
Results have three states:
false: the extracted domain is in the downloaded list;true: the domain is not listed, or the input has no extractable domain;null: the endpoint returned an empty domain list.
Domain matching is ordinal and case-insensitive. It is an exact lookup: listed parent domains do not automatically match subdomains. The utility extracts text after the last @; it does not validate email syntax, trim input, normalize internationalized domains, or verify deliverability. Use a syntax validator before this one when malformed input must be rejected.
Network and failure behavior
The list request is retried three times after the initial attempt. HTTP failures, non-success responses after retries, invalid JSON, cancellation, and unexpected response shapes propagate rather than returning null. A true result means only that the domain was absent from this downloaded snapshot.
The configured list service receives only a GET for its domain data; email addresses are not sent to it. The validator no longer includes the checked address in its empty-list warning.
Disposal removes the validator's named client entry from the shared client cache and disposes the lazy domain holder. Let dependency injection dispose the singleton at application shutdown.
| 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.Extensions.Configuration (>= 4.0.882)
- Soenneker.Extensions.HttpClient (>= 4.0.4035)
- Soenneker.Utils.HttpClientCache (>= 4.0.2068)
- Soenneker.Utils.String (>= 4.0.3204)
- Soenneker.Validators.Validator (>= 4.0.739)
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.5594 | 0 | 10/12/2026 |
| 4.0.5593 | 0 | 10/12/2026 |
| 4.0.5591 | 0 | 10/12/2026 |
| 4.0.5589 | 0 | 10/11/2026 |
| 4.0.5587 | 31 | 10/11/2026 |
| 4.0.5586 | 38 | 10/11/2026 |
| 4.0.5584 | 43 | 10/11/2026 |
| 4.0.5582 | 39 | 10/11/2026 |
| 4.0.5581 | 1,227 | 10/9/2026 |
| 4.0.5580 | 92 | 10/6/2026 |
| 4.0.5579 | 255 | 10/1/2026 |
| 4.0.5578 | 97 | 9/30/2026 |
| 4.0.5577 | 92 | 9/30/2026 |
| 4.0.5576 | 97 | 9/30/2026 |
| 4.0.5575 | 89 | 9/30/2026 |
| 4.0.5573 | 87 | 9/30/2026 |
| 4.0.5572 | 102 | 9/30/2026 |
| 4.0.5571 | 92 | 9/30/2026 |
| 4.0.5570 | 90 | 9/30/2026 |
| 4.0.5508 | 115 | 9/9/2026 |
Update dependency Soenneker.Extensions.HttpClient to 4.0.4035 (#6035)