2013-12-09 5 views
0

Мне нужно отправить почту с несколькими приемниками. Я использую объект mailmessage со свойством «to», содержащим разделенные точкой с двоеточиями. Когда я поймаю исключение, есть ли способ узнать, что адрес ведьмы порождает ошибку?ошибка анализа с помощью мульти приемника mailmessage

Я знаю, что могу использовать цикл, но я думаю, что этот способ более эффективен для большого списка адресов и вложенных файлов.

Я использую ниже код:

MailMessage message = new MailMessage(); 
     message.From = new MailAddress(txtDe.Text); 
     message.Bcc.Add(mails); 
     message.Body = CKEditor1.Text; 
     message.IsBodyHtml = true; 
     message.BodyEncoding = System.Text.Encoding.UTF8; 
     message.Subject = txtObj.Text; 
     message.SubjectEncoding = System.Text.Encoding.UTF8; 

     string txt=Regex.Replace(CKEditor1.Text, @"<[^>]*>", String.Empty); 
     var plainView = AlternateView.CreateAlternateViewFromString(txt, null, "text/plain"); 

     var htmlView = AlternateView.CreateAlternateViewFromString(CKEditor1.Text, null, "text/html"); 
     message.AlternateViews.Add(plainView); 
     message.AlternateViews.Add(htmlView); 

     string[] foldersIds = Session["uploadedFoldersId"].ToString().Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries); 

     foreach (string folderId in foldersIds) 
     { 
      string tempPath = Path.Combine(new string[] { Path.GetTempPath(), "_AjaxFileUpload", folderId }); 

      DirectoryInfo di = new DirectoryInfo(tempPath); 
      FileInfo[] files = di.GetFiles(); 

      smtp.attachement[] att = new smtp.attachement[files.Length]; 

      foreach (FileInfo f in files) 
      { 
       message.Attachments.Add(new Attachment(f.FullName)); 
      } 
     } 
     try 
     { 
      client.Send(message); 
      message.Dispose(); 

      Response.Redirect(tools.urlRetour(Request.QueryString["retour"])); 
     } 
     catch (Exception ex) 
     { 
      err.setErreur("Erreur à l'envoi!", ex.ToString(), 0); 
      if (last) displayInfo(); 
     } 

     finally 
     { 
      if (last) 
      { 
       foreach (string folderId in foldersIds)//remove temporary uploaded files folders 
       { 
        string tempPath = Path.Combine(new string[] { Path.GetTempPath(), "_AjaxFileUpload", folderId }); 

        DirectoryInfo di = new DirectoryInfo(tempPath); 
        di.Delete(true); 
       } 
      } 
     } 

ответ

1

Если я правильно читать документацию (http://msdn.microsoft.com/en-us/library/system.net.mail.smtpfailedrecipientsexception(v=vs.110).aspx), вы должны быть в состоянии прочитать неудачные адреса из FailedRecipient свойства Exception. Чтобы получить правильный тип исключения, измените свой блок catch, чтобы обрабатывать исключения SmtpFailedRecipientsException.

+0

Правильно, но вы должны использовать SmtpFailedRecipientException без каких-либо s, и это работает благодаря – user1974845