Обычно я отправляю электронные письма вот так:
int statusCode = 0;
string error = null;
try
{
smtp.Send(mailMessage);
statusCode = 250;
}
catch (SmtpFailedRecipientException e)
{
Log(String.Format("[Exception] {0}\n\tSmtp: {1}{2}:{3}\n\tStatus Code: {4}\n\tFaild Recipient: {5}", e.Message, smtp.Key, smtp.Value.Host, smtp.Value.Port, e.StatusCode, e.FailedRecipient));
statusCode = (int)e.StatusCode;
error = e.Message;
}
catch (SmtpException e)
{
Log(String.Format("[Exception] {0}\n\tSmtp: {1} - {2}:{3}\n\tStatus Code: {4}", e.Message, smtp.Key, smtp.Value.Host, smtp.Value.Port, e.StatusCode));
statusCode = (int)e.StatusCode;
error = e.Message;
}
catch (Exception e)
{
Log(String.Format("[Exception] {0}.\n\tSource: {1}\n\tStack Trace: {2}", e.Message, e.Source, e.StackTrace));
statusCode = -1;
error = "General Failure";
}
Но этот метод не позволяет мне отлавливать некоторые более «продвинутые» ошибки SMTP, такие как «Нет домена», «Нет такой электронной почты» и т. Д.
Как я могу зафиксировать такого рода ошибки SMTP? Это вообще возможно?
Например, когда я пытаюсь отправить в Gmail на адрес, такой как asdfkljhadf@dgdfasdf.com
, через некоторое время Gmail отправляет мне электронное письмо, которого asdfkljhadf@dgdfasdf.com
не существует.
Спасибо.