c # MailMessage class - Как проверить, что сервер выполнил сообщение - PullRequest
1 голос
/ 02 августа 2011
using (MailMessage message = new MailMessage())
                {
                    message.From = new MailAddress(userEmail.InnerText);
                    message.To.Add(new MailAddress("myemail@email.com"));
                                      message.Subject = selection.Text;
                    message.Body = htmlBody();
                    message.IsBodyHtml = true;
                    SmtpClient client = new SmtpClient("142.16.0.142"); 
                    client.Send(message);

                }

Как проверить, что client.send (сообщение) успешно выполнено?

Ответы [ 4 ]

3 голосов
/ 13 сентября 2011

Поместите Send() метод внутрь try..catch block и catch SmtpFailedRecipientsException:

try
{
   client.Send(message);
}
catch(SmtpFailedRecipientsException smtpFex)
{
    string failedRecipient = smtpFex.FailedRecipient;
    // it will return FailedRecipient's emailID. Now check the value of failedRecipient 
    //and take the action/s.
}
2 голосов
/ 02 августа 2011

Вы не можете быть уверены, что сообщение успешно получено. Нет точного способа проверить, что сообщение было доставлено. Заключите операторы в блок try catch и посмотрите, перехватывает ли оно исключение.

«При отправке отправляется электронное письмо принятым получателям, а затем генерируется исключение SmtpFailedRecipientsException. Исключение будет содержать список получателей, которые были отклонены.» Вы можете сослаться http://msdn.microsoft.com/en-us/library/swas0fwc.aspx для более.

0 голосов
/ 02 августа 2011

Вы можете использовать блок try-catch для перехвата любых исключений, которые будут включать сообщения об отказе SMTP.Однако, если SMTP-сервер принимает почту для доставки, то соединение закрывается и выглядит успешным, но невозможно узнать, было ли оно доставлено фактически.В почтовых клиентах чтение чеков - единственный верный способ проверить, была ли почта доставлена ​​успешно.

0 голосов
/ 02 августа 2011

нет способа проверить, работает ли SMTP-сервер без отправки сообщения.

единственное, что вы можете сделать, - это обернуть .Send в блок try / catch, чтобы выполнить действие в случае его сбоя (регистрация / etc)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...