Its a very old question, I don’t know if you were allowed to solve it.
According to MSDN: http://msdn.microsoft.com/en-us/library/swas0fwc(v=vs.100).aspx
When sending email by sending to multiple recipients, the SMTP server accepts some recipients as valid and rejects others, sends emails to the recipients, and then throws a SmtpFailedRecipientsException . The exception will contain a list of recipients who were rejected.
This is an example of an exception to this exception from MSDN:
try { client.Send(message); } catch (SmtpFailedRecipientsException ex) { for (int i = 0; i < ex.InnerExceptions.Length; i++) { SmtpStatusCode status = ex.InnerExceptions[i].StatusCode; if (status == SmtpStatusCode.MailboxBusy || status == SmtpStatusCode.MailboxUnavailable) { Console.WriteLine("Delivery failed - retrying in 5 seconds."); System.Threading.Thread.Sleep(5000); client.Send(message); } else { Console.WriteLine("Failed to deliver message to {0}", ex.InnerExceptions[i].FailedRecipient); } } }
Full example here: http://msdn.microsoft.com/en-us/library/system.net.mail.smtpfailedrecipientsexception.aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-2
Internally, Send uses the statuscode returned from the RCPT TO command to raise the corresponding exception.
Check the implementation of PrepareCommand in the RecipientCommand.Send method smtpTransport.SendMail (this method is called inside SmtpClient.Send ). It uses RCPT TO to get the statuscode , which is then parsed into the CheckResponse method, and accordingly a SmtpFailedRecipientsException is SmtpFailedRecipientsException . However, VRFY and RCPT are not very reliable because mail servers tend to delay (throttle NDR) or swallow the response as a measure of protection against spam.
source share