title: Why can't I know whether sending a mail fails?
body: <p>I'm implementing a CRM where I need to send mail to my customers. Of course, I found the problem that many seem to find: you don't know whether the mail was successfully sent. However, I don't seem to understand exactly why it's that way.</p>
  
  <p>First, I understand that testing for an email can only be done by actually talking to the server in control of the email (using MX records and then the <code>MAIL FROM</code> and <code>RCPT TO</code> commands), and even then the server may refuse to answer those requests. I think I have that clear, and for example, that's how it seems that sites like <a href="http://verify-email.org/" rel="nofollow noreferrer">http://verify-email.org/</a> work.</p>
  
  <p>Then, I read from <a href="https://stackoverflow.com/questions/13274005/net-smtpclient-is-there-a-way-to-make-sure-that-all-emails-resolve-prior-to-se/18069271?noredirect=1#comment26543309_18069271">this comment</a> to an answer here, that .NET's <code>SmtpClient</code> does the same thing to verify that the message can be sent, and if it fails it throws a <code>SmtpFailedRecipientsException</code>. So I seem to get it...</p>
  
  <p>But then, I decide to try sending a mail to an invalid address: <a href="http://mailto:asdf@asdf.asdf" rel="nofollow noreferrer">asdf@asdf.asdf</a> (I hope .asdf is not one of those recently approved new TLDs). I use it on <a href="http://verify-email.org/" rel="nofollow noreferrer">http://verify-email.org/</a> and it says it's invalid (because there's not even an MX record, obviously), but when I use <code>SmtpClient</code> it succeeds! Why?</p>
  
  <p>Then I read <a href="https://stackoverflow.com/questions/5052282/capture-smtp-errors-in-net">this other question</a> (I realize I'm not the first one asking this) where it says that SMTP is a “store and forward” protocol (meaning that it may not try to send the message immediately) which I also understand... but at the same time I find contradictory.</p>
  
  <p>How can <a href="http://asdf.asdf/" rel="nofollow noreferrer">asdf.asdf</a> store and forward a message when it doesn't even exist? Why does <a href="http://verify-email.org/" rel="nofollow noreferrer">http://verify-email.org/</a> (and other web services, I didn't try only this one) get an immediate response while <code>SmtpClient</code> does not? What are they doing differently?</p>