[英]Sending batch email in C#
編輯我使用以下代碼在C#中發送批處理電子郵件。 但是,當其中一個收件人的電子郵件地址無效時,甚至不會向其電子郵件地址有效的其他收件人發送電子郵件,並且我得到了例外:
system.net.mail.smtpfailedrecipientsexception失敗的收件人
即使其中一個電子郵件地址無效,有什么方法可以將電子郵件發送給其他有效的收件人?
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() ));
}
}
此外,在將字符串電子郵件地址發送到SendMailMessage方法之前,請通過以下方法檢查它們是否有效:
public bool IsValidEmail(string emailaddress)
{
try
{
MailAddress m = new MailAddress(emailaddress);
return true;
}
catch (FormatException)
{
return false;
}
}
就我個人而言,我會遍歷並多次調用“發送”(每個地址一個)。 如果將密件抄送發送到許多地址,可能會出錯,包括郵件服務器由於地址過多而拒絕它。
當使用“發送到多個收件人”發送電子郵件並且SMTP服務器接受某些收件人為有效的收件人而拒絕其他收件人時,“發送”會將電子郵件發送給接受的收件人,然后引發SmtpFailedRecipientsException。 該例外將包含被拒絕的收件人的列表。
從文檔: http : //msdn.microsoft.com/en-us/library/swas0fwc.aspx
聽起來它確實可以實現您想要的功能,請嘗試將其發送到您可以訪問的電子郵件中,然后查看是否已發送該電子郵件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.