Итак, у меня есть приложение 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;
}
}