Esempio n. 1
0
    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();
        }
    }
Esempio n. 2
0
        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();
            }
        }
Esempio n. 3
0
 public virtual void SendAsyncCancel()
 {
     _smtpClient.SendAsyncCancel();
 }
Esempio n. 4
0
 public override void SendAsyncCancel()
 {
     client.SendAsyncCancel();
 }