I wanna send email to multiple addresses (more than 1000 users) and use the following code, when I use it to send email to less than 100 users it works, but for more than 100 users it does not work and throw smtpfailedrecipientsexception failed recipients! why? how can I send email to valid addresses and get ride of this error?
public void SendMailMessage (string[] to,string message,string subject) { MailMessage mMailMessage = new MailMessage (); int lenght = to.GetLength(0); if (lenght > 1) { foreach (string email in to) { mMailMessage.Bcc.Add ( email ); } } else { mMailMessage.To.Add ( to[0] ); } mMailMessage.From = new MailAddress ("no-replay@mycompany.net"); SmtpClient mSmtpClient = new SmtpClient (); mMailMessage.Body = message; mMailMessage.IsBodyHtml = true; mMailMessage.Priority = MailPriority.Normal; mMailMessage.Subject = subject; mSmtpClient.EnableSsl = true; ServicePointManager.ServerCertificateValidationCallback = delegate(object s,X509Certificate certificate,X509Chain chain, SslPolicyErrors sslPolicyErrors) {return true;}; try { mSmtpClient.Send (mMailMessage); } 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) { Logger.Debug("Delivery failed - retrying in 5 seconds."); System.Threading.Thread.Sleep(5000); //client.Send(message); mSmtpClient.Send (mMailMessage); } else { Logger.Debug (string.Format ("Failed to deliver message to {0},{1}", ex.InnerExceptions[i].FailedRecipient, i)); } } } catch (Exception ex) { Logger.Debug (string.Format("Exception caught in RetryIfBusy(): {0}", ex.ToString() )); } }