Soenneker.Validators.Email.Disposable.Online
4.0.5457
Prefix Reserved
See the version list below for details.
dotnet add package Soenneker.Validators.Email.Disposable.Online --version 4.0.5457
NuGet\Install-Package Soenneker.Validators.Email.Disposable.Online -Version 4.0.5457
<PackageReference Include="Soenneker.Validators.Email.Disposable.Online" Version="4.0.5457" />
<PackageVersion Include="Soenneker.Validators.Email.Disposable.Online" Version="4.0.5457" />
<PackageReference Include="Soenneker.Validators.Email.Disposable.Online" />
paket add Soenneker.Validators.Email.Disposable.Online --version 4.0.5457
#r "nuget: Soenneker.Validators.Email.Disposable.Online, 4.0.5457"
#:package Soenneker.Validators.Email.Disposable.Online@4.0.5457
#addin nuget:?package=Soenneker.Validators.Email.Disposable.Online&version=4.0.5457
#tool nuget:?package=Soenneker.Validators.Email.Disposable.Online&version=4.0.5457
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.872)
- Soenneker.Extensions.HttpClient (>= 4.0.3998)
- Soenneker.Utils.HttpClientCache (>= 4.0.2051)
- Soenneker.Utils.String (>= 4.0.3175)
- 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 |
|---|---|---|
| 11.0.5640 | 0 | 10/27/2026 |
| 11.0.5639 | 0 | 10/27/2026 |
| 11.0.5638 | 47 | 10/27/2026 |
| 11.0.5637 | 47 | 10/27/2026 |
| 11.0.5636 | 42 | 10/27/2026 |
| 11.0.5635 | 52 | 10/26/2026 |
| 11.0.5634 | 54 | 10/26/2026 |
| 11.0.5631 | 54 | 10/26/2026 |
| 11.0.5630 | 51 | 10/26/2026 |
| 11.0.5629 | 52 | 10/26/2026 |
| 11.0.5628 | 57 | 10/26/2026 |
| 11.0.5625 | 52 | 10/26/2026 |
| 11.0.5623 | 59 | 10/26/2026 |
| 4.0.5622 | 61 | 10/26/2026 |
| 4.0.5621 | 61 | 10/25/2026 |
| 4.0.5619 | 163 | 10/15/2026 |
| 4.0.5618 | 84 | 10/15/2026 |
| 4.0.5617 | 98 | 10/15/2026 |
| 4.0.5616 | 85 | 10/15/2026 |
| 4.0.5457 | 116 | 9/3/2026 |
Update dependency Soenneker.Utils.String to 4.0.3175 (#5985)