У меня есть два способа отправки писем.Одна заставляет пользовательский интерфейс останавливаться во время отправки электронного письма, а другая должна быть асинхронной, сохраняя пользовательский интерфейс активным (и в моем случае использующим перенаправление на другую страницу позже), пока электронная почта отправляется в фоновом режиме, на другомнить.Я не слишком опытен с асинхронными функциями, но думаю, это должно было сработать.
Моя конкретная проблема:
Этот метод отправляет электронное письмо
public static void sendEmail(string nameFrom, string passwordFrom, string to, string subject, string text, string smtpHost, string attachments = null, int port = 25)
{
System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage();
System.Net.NetworkCredential credentials = new System.Net.NetworkCredential(nameFrom, passwordFrom);
System.Net.Mail.MailAddress from = new System.Net.Mail.MailAddress(nameFrom);
System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient();
message.To.Add(to);
message.From = from;
message.Subject = subject;
message.Body = text;
message.IsBodyHtml = true;
smtp.Host = smtpHost;
smtp.Port = port;
smtp.EnableSsl = true;
smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
smtp.UseDefaultCredentials = false;
smtp.Credentials = credentials;
if (attachments != null && attachments != "")
{
if (System.IO.File.Exists(attachments) == true)
{
System.Net.Mail.Attachment attFile = new System.Net.Mail.Attachment(attachments);
message.Attachments.Add(attFile);
}
}
smtp.Send(message);
}
Этот не
public static async Task sendEmailAsync(string nameFrom, string passwordFrom, string to, string subject, string text, string smtpHost, string attachments = null, int port = 25)
{
System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage();
System.Net.NetworkCredential credentials = new System.Net.NetworkCredential(nameFrom, passwordFrom);
System.Net.Mail.MailAddress from = new System.Net.Mail.MailAddress(nameFrom);
System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient();
message.To.Add(to);
message.From = from;
message.Subject = subject;
message.Body = text;
message.IsBodyHtml = true;
smtp.Host = smtpHost;
smtp.Port = port;
smtp.EnableSsl = true;
smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
smtp.UseDefaultCredentials = false;
smtp.Credentials = credentials;
if (attachments != null && attachments != "")
{
if (System.IO.File.Exists(attachments) == true)
{
System.Net.Mail.Attachment attFile = new System.Net.Mail.Attachment(attachments);
message.Attachments.Add(attFile);
}
}
await smtp.SendMailAsync(message);
}
Почему второй не отправляет электронное письмо и как я могу это исправить?