Вы смотрите ответ на ваш звонок на
sender.SendEmailAsync(mail);
чтобы узнать, действительно ли письмо было отправлено?
Я только что посмотрел на исходный код этого метода, и он делает это:
public bool SendEmailAsync(string toEmail, string toName)
{
try
{
SendEmailDelegate dc = new SendEmailDelegate(this.SendEmail);
AsyncCallback cb = new AsyncCallback(this.GetResultsOnCallback);
IAsyncResult ar = dc.BeginInvoke(toEmail, toName, cb, null);
}
catch (Exception ex)
{
return false;
}
return true;
}
То есть код перехватывает любое выброшенное исключение и просто возвращает false. Не только это, но и в AsyncCallback он делает то же самое, то есть «ест» исключение, и вы никогда не узнаете о каких-либо исключениях.
Чтобы устранить вашу проблему, я бы использовал синхронный вызов SendEmail
и изменил бы его код (в методе SendEmail
) на NOT , чтобы перехватить Исключение, чтобы вызывающий (вы) знал, что произошло. например,
private static void SendEmail(MailMessage mail)
{
Email sender = new Email();
sender.SendEmail(mail);//modify this method as well!
}