private static async Task SendMailExImplAsync( System.Net.Mail.SmtpClient client, System.Net.Mail.MailMessage message, CancellationToken token) { token.ThrowIfCancellationRequested(); var tcs = new TaskCompletionSource <bool>(); System.Net.Mail.SendCompletedEventHandler handler = null; Action unsubscribe = () => client.SendCompleted -= handler; handler = async(s, e) => { unsubscribe(); // a hack to complete the handler asynchronously await Task.Yield(); if (e.UserState != tcs) { tcs.TrySetException(new InvalidOperationException("Unexpected UserState")); } else if (e.Cancelled) { tcs.TrySetCanceled(); } else if (e.Error != null) { tcs.TrySetException(e.Error); } else { tcs.TrySetResult(true); } }; client.SendCompleted += handler; try { client.SendAsync(message, tcs); using (token.Register(() => client.SendAsyncCancel(), useSynchronizationContext: false)) { await tcs.Task; } } finally { unsubscribe(); } }
public async Task SendEmailAsync(string email, string subject, string message) { //var emailMessage = new MimeMessage(); //emailMessage.From.Add(new MailboxAddress("Администрация сайта", "*****@*****.**")); //emailMessage.To.Add(new MailboxAddress("", email)); //emailMessage.Subject = subject; //emailMessage.Body = new TextPart(MimeKit.Text.TextFormat.Html) //{ // Text = message //}; //using (var client = new SmtpClient()) //{ // await client.SendAsync("smtp.mail.ru", 465, true,SecureSocketOptions.Auto); // await client.AuthenticateAsync("*****@*****.**", "[eqdyjc85"); // // await client. // await client.SendAsync(emailMessage); // await client.DisconnectAsync(true); //} var l_mail = new System.Net.Mail.MailMessage("*****@*****.**", email); l_mail.Subject = "Активация учетной записи"; l_mail.Body = message; l_mail.IsBodyHtml = true; using (var smtp = new System.Net.Mail.SmtpClient()) { smtp.Host = "smtp.mail.ru"; smtp.EnableSsl = true; var NetworkCred = new System.Net.NetworkCredential("*****@*****.**", "[eqdyjc85"); smtp.UseDefaultCredentials = true; smtp.Credentials = NetworkCred; smtp.Port = 587; await smtp.SendMailAsync(l_mail); smtp.SendAsyncCancel(); } }
public virtual void SendAsyncCancel() { _smtpClient.SendAsyncCancel(); }
public override void SendAsyncCancel() { client.SendAsyncCancel(); }