Advanced email validation component for Microsoft .NET
It is completely written in managed code (C#) and is compliant with Common Language Specification (CLS), so it can be used with any other .NET language too, including Visual Basic (VB.NET), C++/CLI, J#, IronPython, IronRuby, F# and PowerShell.
Designed from the ground up to make the developer's life easier, EmailVerify.NET's whole architecture lets you perform a full e-mail validation with just a single method call, whether the job is as simple as a syntax check or as complex as a mailbox existence test.
Here is, for example, what it takes to validate an email address using the default settings for the component:
var verifier = new EmailVerifier();
var result = verifier.Verify("john@example.com", VerificationLevel.Mailbox);
if (result.IsSuccess)
{
// TODO: Show a message box with the great news
}
With a very stable and mature code base, EmailVerify.NET supports six different e-mail address verification depths and allows you to configure every possible aspect of the validation process, including adherence to IETF standards preferences, network-related settings, and timeouts for multi-threaded activities.
In the following snippet, for example, EmailVerify.NET is configured not to allow domain literals in e-mail addresses, while allowing comments and quoted strings. Furthermore, the component is set to use a particular DNS server (instead of a system-configured server) for its lookups:
verifier.AllowDomainLiterals = false;
verifier.AllowComments = true;
verifier.AllowQuotedStrings = true;
// The component will use just the provided DNS server for its lookups
verifier.DnsServers.Clear();
verifier.DnsServers.Add(IPAddress.Parse("10.0.1.18"));
verifier.VerificationTaskProgressChanged += (sender, args) =>
{
Console.WriteLine("The address {0} reached level {1}",
args.Task.EmailAddress,
args.CurrentLevel);
};
EmailVerify.NET internally employs a very fast, multi-threaded e-mail address validation engine capable of processing hundreds of items at once using asynchronous-based processing logic and different optimization algorithms. Furthermore, the component exposes dedicated methods and structures to track down and configure each verification activity that may take place in every asynchronous scenario at optimal performance.
var group = new VerificationTaskGroup();
// Add some entries to the verification group
group += new VerificationTask("alice@example.com", VerificationLevel.Dns);
group += new VerificationTask("bob@example.net", VerificationLevel.Syntax);
group += new VerificationTask("mike@example.org", VerificationLevel.Smtp);
// Start the validation of the whole group, asynchronously
verifier.VerifyAsync(group);
verifier.VerificationTaskGroupProgressChanged += (sender, args) =>
{
Console.WriteLine("Group percent processed: {0}%",
args.ProgressPercentage);
};
verifier.VerificationTaskGroupCompleted += (sender, args) =>
{
Console.WriteLine("Whole group completed!");
Console.WriteLine("{0} items processed.",
args.TaskGroup.Count);
};
No, it doesn't. EmailVerify.NET employs DNS and SMTP protocol functionalities to perform e-mail address validations and absolutely avoids sending any email message to external mail exchangers for delivery.
EmailVerify.NET verifies e-mail addresses with up to six different kinds of tools. It validates any address you give it against IETF standards (RFC 2821 and RFC 2822, among others), thus guaranteeing its syntactical validity. Then it extracts the domain from each address and performs different DNS lookups to ensure that the related domain exists and is formally valid. After that, it checks an embedded database to find if that domain is a disposable email address (DEA) provider and reacts accordingly.
Next, it tries to contact the mail exchanger responsible for the given e-mail address and begins a fake SMTP dialog with that server, emulating a real mail server. This way it ensures that the server can handle emails for the address. Many SMTP servers actually give back false positive answers as a protection against spammers. To overcome this issue, EmailVerify.NET finally attempts to query the target mail exchanger multiple times with different fabricated addresses.
Sure! EmailVerify.NET's unique multithreaded engine lets you perform thousands of validations at once. It features a smart algorithm that, once given a group of e-mail addresses to verify, chooses the order to process each item of the batch to maximize its overall performance, thus achieving the highest allowed degree of parallelism.
Yes, as long as it is running with Microsoft .NET framework version 2.0 or newer (including v4.0).
Of course! EmailVerify.NET follows Microsoft's event-based pattern and allows for optimal integration with any desktop-based solution. The component exposes different asynchronous methods and notification events built from the ground up to support complex multi-threaded scenarios like the ones usually found in this kind of applications.