|
New in version 2.0
Click here for a list of new features in 2.0
Do you have a mailing list? Do you collect email addresses? Are you tired of
getting bounce backs every time you perform a mailing? aspNetMX will solve your
email validation problems.
aspNetMX is an assembly that requires the Microsoft .NET framework to run. It
is used to validate email addresses at different levels. aspNetMX does not have
a GUI front end, it is a server component that can only be accessed
programmatically.
aspNetMX can be used on signup forms or it can validate huge lists of email
addresses from one address to millions. It has built in high performance
features that aren't found anywhere else. After almost a year in development
and planning, aspNetMX will solve all of your email validation problems.
aspNetMX validates email addresses at four different levels. Syntax, MXRecords
(Domain), SMTP, and Mailbox levels. To validate an email address, simply create
the aspNetMX object, pass it the email address and the level of validation to
check, and aspNetMX will do the rest. For some code examples on how to use
aspNetMX, click here.
aspNetMX does not actually send an email, but it can check the remote mail
server to see if the server will accept an email for that address. The only way
to truly check to see if an email address is valid, is to send an email. Here's
a more detailed explanation of the 4 levels of validation provided by aspNetMX.
MXValidateLevel.Syntax
The syntax level is the easiest validation to perform. When an email is checked
for MXValidateLevel.Syntax, the email address is verified to be syntactically
correct.
MXValidateLevel.MXRecords
aspNetMX checks to see if an email address is both syntactically correct and
makes a DNS network call to verify the domain name part of an email address has
MX Records.
MXValidateLevel.SMTP
aspNetMX checks all of the above levels, and opens a network connection to the
remote email address's mail server, to verify the mail server does exist.
aspNetMX then immedately closes the connection.
MXValidateLevel.Mailbox
aspNetMX checks all of the above levels, plus, aspNetMX initiates standard RFC
SMTP commands against the remote mail server to validate the mail server will
accept an email for the address.
When Validate() is executed, it attempts to validate an email address UP TO the
level that was specified. If the validation was successful, it returns that
level. If the validation was NOT successful, it returns the last highest level
of validation that was found. This allows you to vary actions, based upon the
level of validation returned. For example
Allows you to take different actions based upon the result from aspNetMX. If
only MXValidateLevel.MXRecords was achieved, perhaps a network connection was
down, and the email address could be flagged for later validation, where as if
MXValidateLevel.SMTP was returned, that means a successful connection was made
to the mail server, but for some reason it was rejected. The email address is
probably bad.
What's new in version 2.0
aspNetMX is even more powerful than before. Check out some of these new features in 2.0.
New Events
Get even better control with your application with the new events in aspNetMX. Some of these events include the OnServerResponse, OnError, an OnLog event.
The new OnServerResponse allows you to inspect the SMTP response, line by line, word for word, so you can exactly see why an email address is rejected.
The new OnError event is raised every time an internal exception is thrown. Now you can control if you want that exception suppressed, or thrown.
The new OnLog event is raised every time a new log entry is created. Record entries to a central database, your own custom files, or create your own notification program.
New MX Checking Features
aspNetMX has even more powerful DNS MX record checking features. We’ve added the capability to recurse subdomains for the MX records. This helps when the recipient has mis-typed their domain name. aspNetMX also checks the literal domain names, so it validates SMTP servers found at the 'A' record of the domain. Another added bonus is the DnsRetries and DnsRetryPause features. aspNetMX will now retry DNS queries. Because of aspNetMX’s speed, we found it was overloading DNS servers. aspNetMX now has the capability to retry queries, and even allow you to specify a pause interval in milliseconds to give your DNS server time to query for MX records.
Better Logging, Debugging and Exception Handling
aspNetMX now logs additional debug statements to the validation log for easier troubleshooting. If exceptions are raised, they can now be trapped in the OnError event. If all exceptions want to be ignored, simply set the new ThrowExcpetion property to false. aspNetMX also raises specific exceptions during the validation process. For example DnsExceptions are raised during any DNS query errors.
A Word about Email Validation
Email validation is a tricky process. aspNetMX has made this process incredibly
simple and powerful. The only correct way to verify an email address exists is
to send a mailbox an email and see if you receive a bounce back email or NDR
(Non-Deliverable Receipt). aspNetMX goes as far as possible in attempting to
validate email addresses WITHOUT sending an actual email.
There are a couple of issues to be aware of when validating email addresses at
the MXValidateLevel.Mailbox level.
Positive Validation when a Mailbox doesn't exist
Some mail servers always return a positive response that a mailbox exists, and
it is only until an email is sent to a mailbox, that the server responds with a
negative response saying a mailbox does not exist. Microsoft's exchange server
is notorious for doing this. However, we have optimized aspNetMX to help with
this situation, and return faster results against these known servers.
MXValidateLevel.Mailbox can be a Time Intensive Process
To better explain what happens under the covers when an email addresses is
tested to Mailbox level, the following steps occur:
-
The email addresses is syntactically checked.
-
If the email address is valid, a DNS Lookup for MX Records is made. This
involves network calls to DNS Servers to see if MX Records exist. If the binary
MX Records exist, and are returned to aspNetMX, aspNetMX turns the records into
a usable form.
-
If the MX Records return the names of the Mail Servers, and not the IP
addresses of the mail servers, another DNS call is made to lookup the actual IP
addresses.
-
Once the IP addresses have been determined, another network call is made, this
time to the email address's SMTP server. If the mail server is not responding,
and there are fail over MX Records, aspNetMX will resolve each of the
additional MX Records to IP addresses and then attempt to make a successful
SMTP connection.
-
Once a SMTP session has been established, standard SMTP commands are issued
against the mail sever to determine if a mailbox exists for the email address.
To protect against email harvesting, some mail servers will always return a
positive response, saying a mailbox exists, when in fact, it doesn't. Also, a
DNS Server or SMTP server may be down at the very instance you are attempting
to validate an email address. Thus aspNetMX could accidentally mark that email
address as not valid, when in fact it is. It's recommended that you test failed
email addresses a couple of times, at different times, to verify they are in
fact bad.
aspNetMX has been highly optimized, unfortunately, most of the time-intensive
issues that affect email validation are outside of the control of aspNetMX.
These include the across-the-internet or across-the-network DNS lookups, and
the across-the-internet SMTP calls. Depending upon your network speed, and the
remote SMTP server, the whole process may be completed in a few milliseconds,
however, we've seen it take as long as 60 seconds. To help with this, aspNetMX
utilizes a number of built-in higher-performance techniques.
Check out aspNetMX's High Performance Features.
|