verify if a given email address is exist

  • Thread starter Thread starter RGF
  • Start date Start date
R

RGF

Hi,
I wrote an application with VS2005 to send mail, while the application
works fine. I am trying to find a way to reduce email address bounce
backs, is there a .Net (or command line) method via which I could
verify if a given email address is exist.

To clarify, I am trying to validate beyond the domain, I would like to
validate if the mailbox is present at a SMTP server, so that I can
ping the gmail SMTP server to see if (e-mail address removed) does not
exist in their server so that my application will not sent the email.

Any pointers would be greatly appreciated..

btw, I looked into Telnet's VRFY but apparently is not supported under
windows???

Thanks in advanced,
Raf
 
Hi,
I wrote an application with VS2005 to send mail, while the application
works fine. I am trying to find a way to reduce email address bounce
backs, is there a .Net (or command line) method via which I could
verify if a given email address is exist.

To clarify, I am trying to validate beyond the domain, I would like to
validate if the mailbox is present at a SMTP server, so that I can
ping the gmail SMTP server to see if (e-mail address removed) does not
exist in their server so that my application will not sent the email.

I would be very surprised if you could do this, given that verifying an
email account at an SMTP server without a valid password would be a
significant security risk.

You mention gmail.com, but if you're looking for a more general
solution you should also understand that not all email addresses
correspond to a same-named SMTP account on the same domain. Email
aliases, forwarding, and other factors can result in the email address
being completely unrelated to the email account actually used to
receive a message sent to the address.

Basically, you should just deal with the bounces. If you're writing
any sort of responsible mail client, you won't be having enough bounces
for them to be a problem. There's not really any practical way to do
what you want anyway.

Pete
 
It's not really possible to do what you ask. Not with any kind of
certainty. I found this on the website for a product that claims to be able
to validate e-mail addresses as much as possible without actually sending
the e-mail.

--

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:

1. The email addresses is syntactically checked.
2. 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.
3. 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.
4. 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.
5. 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.
 
Hi,

Actually you can do this,

just send EHLO/HELO,MAIL FROM: and then RCPT TO:

This is probably 90% ccurate, because most servers reject invalid addresses
before reahing data command.
Though SMTP rfc allows rcpt to: to eat alll addresses and reject them on
DATA command.
 
Actually you can do this,

just send EHLO/HELO,MAIL FROM: and then RCPT TO:

This is probably 90% ccurate, because most servers reject invalid
addresses before reahing data command.
Though SMTP rfc allows rcpt to: to eat alll addresses and reject them
on DATA command.

I see from the replies that I completely misunderstood the question.
At least, having read the other two replies, now that I read the
original post it means to me something completely different from what I
thought it meant before. :) (For some reason I thought you were going
to try to actually check for a valid login account on the SMTP server,
rather than just asking the SMTP server if the email address is
valid...maybe too much client-centric coding lately or something).

I'll mention that many SMTP servers I've seen reject any traffic from
other servers running on a dynamic IP address, but assuming you have a
legitimate email server application, I'm guessing it would be running
on a regular hosted static IP address.

I do find myself wondering why, if you actually do have email to send,
why you don't just go ahead and try to send it. It seems like unless
you have some huge number of invalid email addresses (and if you do,
the application seems suspicious to me), the overall bandwidth would be
_higher_ doing this "ping, then send" process, since you'd waste more
bandwidth doing the pings than the occasional bounce would cost.

The whole thing seems kind of "spammy" to me. But since someone else
has apparently already implemented this sort of thing, maybe there's a
legitimate use for something like this after all.

That's all rhetorical, by the way. There's not actually any need for
you to justify your goal. :)

Pete
 
Back
Top