Получение результата от отправки почты C # - PullRequest
1 голос
/ 28 октября 2011

Я новичок в этом, но я хочу получить вывод из моего приложения, которое отправляет почту. Например, я хочу знать, если

  • Соединение установлено
  • Если пользователь был успешно аутентифицирован
  • Если письмо было успешно отправлено и т. Д.

Я знаю, как отправлять почту с помощью System.Net.Mail, но есть ли способ получить эту информацию?

EDIT:

В ссылке, опубликованной Дэвидом Страттоном, вы можете увидеть журнал, и он получает коды состояния, такие как

  • 220 w2k Служба Microsoft ESMTP MAIL, версия: 5.0.2195.6713 готова в субботу, 31 декабря 2005 г.
  • 250-w2k Привет
  • 250-AUTH GSSAPI NTLM LOGIN ..
  • 250-AUTH = LOGIN ..
  • 250-TURN ..
  • 250-ATRN ..
  • 250-РАЗМЕР 2097152 ..
  • 250-ETRN ..
  • 250-PIPELINING ..
  • 250-DSN ..
  • 250-ENHANCEDSTATUSCODES ..
  • 250-8bitmime ..
  • 250-BINARYMIME ..
  • 250-CHUNKING ..
  • 250-VRFY ..
  • 250 ОК ..
  • ПОЧТА ОТ: ..
  • 250 2.1.0 me@mycompany.com .... Отправитель ОК ..
  • RCPT TO: ..
  • 550 5.7.1 Невозможно передать ему@hiscompany.com

Есть ли способ запустить эти события так, чтобы по мере их появления я мог отображать их?

Ответы [ 3 ]

6 голосов
/ 28 октября 2011

Поместите ваш SmtpClient.Send() вызов в блок try / catch и поймайте следующие ошибки.

ArgumentNullException

  • сообщение - Ничто.

InvalidOperationException

  • Этот SmtpClient выполняет вызов SendAsync.
  • MailMessage. От Ничего.
  • В свойствах MailMessage.To, MailMessage.CC и MailMessage.Bcc не указаны получатели.
  • Для свойства DeliveryMethod установлено значение "Сеть", а для "Хост" - ничего.
  • Для свойства DeliveryMethod установлено значение Network, а Host равен пустой строке ("").
  • Свойство DeliveryMethod имеет значение «Сеть», а «Порт» равен нулю, отрицательному числу или больше 65 535.

ObjectDisposedException

  • Этот объект был утилизирован.

SmtpException

  • Ошибка подключения к SMTP-серверу.
  • Ошибка аутентификации.
  • Тайм-аут операции.
  • EnableSsl имеет значение true, но для свойства DeliveryMethod установлено значение SpecifiedPickupDirectory или PickupDirectoryFromIis.
  • EnableSsl имеет значение true, но почтовый сервер SMTP не объявлял STARTTLS в ответе на команду EHLO.

SmtpFailedRecipientsException

  • Сообщение не может быть доставлено одному или нескольким получателям в MailMessage.To, MailMessage.CC или MailMessage.Bcc.

Ссылка: http://msdn.microsoft.com/en-us/library/swas0fwc.aspx

5 голосов
/ 28 октября 2011

Если вы хотите создать файл журнала на основе сеанса SMTP, вы можете изменить файл .config, чтобы сделать это автоматически. Инструкция здесь .

1 голос
/ 28 октября 2011

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

Критическая точка, вероятно, является последней, потому что, как только вы ставите в очередьэлектронная почта в очереди SMTP-сервера у вас нет исключений, но может случиться так, что электронная почта не отправляется.

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