2014-11-06 3 views
1

Я использую .NET для отправки электронной почты. Я использую DL для MailMessage.From. Как сам DL или индивидуальное лицо получают уведомление о сбое, когда сообщение электронной почты не может быть отправлено по какой-либо причине, такой как неверный адрес электронной почты получателя?Получить уведомление об отказе электронной почты при отправке из списка рассылки (DL) в .NET

Уведомления об отказе от уведомления не отправляются в DL. Хотя они работают при использовании идентификатора электронной почты пользователя в «FROM». Я попытался добавить индивидуальный идентификатор электронной почты в ReplyTo, это не сработало.

Просьба предложить.

+0

Не могли бы вы окружите свой код с примеркой уловом, который посылает по электронной почте к нужному пользователю? Можете ли вы предоставить код? – Ckrempp

+0

Это обычный почтовый код отправки .NET. – Brij

+0

Да, исключение не происходит. – Brij

ответ

0

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

Статус доставки Уведомления для DL запрещены согласно расширению службы SMTP для уведомлений о статусе доставки (DSN) rfc 3461. В соответствии с этим протоколом в разделе 5.2.7.1 рассылок:

важно, чтобы DSNs НЕ быть выпущенным как MTA (сообщить успешной доставке в список), и список (сообщить сообщение отказ с помощью «провал» DSN.)

Вот почему ваш код будет работать нормально с индивидуальными адресами электронной почты, но не будет работать с DL

0

Вы должны попробовать SmtpFailedRecipientsException. Вы можете найти фрагмент кода здесь

public static void RetryIfBusy(string server) 
    { 
     MailAddress from = new MailAddress("[email protected]"); 
     MailAddress to = new MailAddress("[email protected]"); 
     MailMessage message = new MailMessage(from, to); 
     // message.Subject = "Using the SmtpClient class."; 
     message.Subject = "Using the SmtpClient class."; 
     message.Body = @"Using this feature, you can send an e-mail message from an application very easily."; 
     // Add a carbon copy recipient. 
     MailAddress copy = new MailAddress("[email protected]"); 
     message.CC.Add(copy); 
     SmtpClient client = new SmtpClient(server); 
     // Include credentials if the server requires them. 
     client.Credentials = (ICredentialsByHost)CredentialCache.DefaultNetworkCredentials; 
     Console.WriteLine("Sending an e-mail message to {0} using the SMTP host {1}.", 
      to.Address, client.Host); 
     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); 
       } 
      } 
     } 
     catch (Exception ex) 
     { 
      Console.WriteLine("Exception caught in RetryIfBusy(): {0}", 
        ex.ToString()); 
     } 
    } 

пожалуйста, обратитесь к этой ссылке для получения более подробной информации MSDN Link

 Смежные вопросы

  • Нет связанных вопросов^_^