ASP.NET - SmtpClient.Send никогда не ловит исключение - PullRequest
0 голосов
/ 22 октября 2018

Итак, у меня есть приложение ASP.NET с экраном создания учетной записи, где пользователь вставляет свои данные для создания учетной записи.Среди прочего, он запрашивает адрес электронной почты пользователя, который необходим для получения пароля.Чтобы проверить введенный адрес электронной почты, я использую регулярное выражение, чтобы проверить, является ли формат приемлемым.Тем не менее, пользователь все еще может написать случайное электронное письмо, которое не существует (например: «sfsag@asfa.sfa.saf»).И метод «Отправить» из SmtpClient отправит ему, существует ли электронная почта на самом деле или нет.Я пытался перехватить исключение (SmtpException, SmtpFailedRecipientsException и обычное исключение), чтобы избежать таких ситуаций, но SmtpClient игнорирует его и отправляет электронное письмо независимо от того, является ли адрес электронной почты действительным или нет.

Вот код, о котором идет речьпуть:

public static bool MailPassword(String email, String pwd)
    {
        try
        {
            MailMessage msg = new MailMessage
            {
                From = new MailAddress("admin@candidaturas.com")
            };

            msg.To.Add(email);
            msg.Subject = "Password de Acesso";
            msg.Body = "A password de acesso para a sua conta é a seguinte: " + pwd;
            msg.IsBodyHtml = true;

            SmtpClient smt = new SmtpClient
            {
                Host = Constants.Host,
                Port = Constants.Port
            };

            System.Net.NetworkCredential ntwd = new NetworkCredential
            {
                UserName = Constants.Email,
                Password = Constants.Password
            };

            smt.UseDefaultCredentials = false;
            smt.Credentials = ntwd;
            smt.EnableSsl = true;
            smt.Send(msg);

            return true;
        }
        catch(SmtpFailedRecipientsException smtpe)
        {
            Console.WriteLine("Error: {0}", smtpe.StatusCode);
            return false;
        }
        catch (SmtpException smtpe)
        {
            Console.WriteLine("Error: {0}", smtpe.StatusCode);
            return false;
        }
        catch (Exception e)
        {
            Console.WriteLine("Exception caught in RetryIfBusy(): {0}", e.ToString());
            return false;
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...