public static void SendToEnqueue(string Subject, List <string> Emails, string msgBody, string from)
        {
            NuvemMailMessage msg = new NuvemMailMessage();

            foreach (var to in Emails)
            {
                msg.To.Add(new MailAddress(to));
            }

            msg.From       = new MailAddress(Properties.Settings.Default.SMTP_EMAIL, from);
            msg.Body       = msgBody;
            msg.IsBodyHtml = true;

            _Queue.Add(msg);
        }
        public static void SendMail(NuvemMailMessage msg)
        {
            /*
             * Cliente SMTP
             * Gmail:  smtp.gmail.com  puerto:587
             * Hotmail: smtp.liva.com  puerto:25
             */
            SmtpClient client = new SmtpClient(Properties.Settings.Default.SMTP_SERVER, Properties.Settings.Default.SMTP_PORT);

            client.EnableSsl             = true;
            client.UseDefaultCredentials = false;
            client.Credentials           = new NetworkCredential(Properties.Settings.Default.SMTP_EMAIL, Properties.Settings.Default.SMTP_PWD);

            try
            {
                client.Send(msg);
            }
            catch (Exception ex)
            {
                LogManager.Write("ERROR:" + Environment.NewLine + "\tMETHOD = MailHelper." + MethodBase.GetCurrentMethod().Name + Environment.NewLine + "\tMESSAGE = " + ex.Message);
            }
        }
        public static Task SendMailAsync(NuvemMailMessage msg)
        {
            /*
             * Cliente SMTP
             * Gmail:  smtp.gmail.com  puerto:587
             * Hotmail: smtp.liva.com  puerto:25
             */
            SmtpClient client = new SmtpClient(Properties.Settings.Default.SMTP_SERVER, Properties.Settings.Default.SMTP_PORT);

            client.EnableSsl             = true;
            client.UseDefaultCredentials = false;
            client.Credentials           = new NetworkCredential(Properties.Settings.Default.SMTP_EMAIL, Properties.Settings.Default.SMTP_PWD);

            //try
            //{
            TaskCompletionSource <object> tcs = new TaskCompletionSource <object>();
            Guid sendGuid = Guid.NewGuid();

            SendCompletedEventHandler handler = null;

            handler = (o, ea) =>
            {
                if (ea.UserState is Guid && ((Guid)ea.UserState) == sendGuid)
                {
                    client.SendCompleted -= handler;
                    if (ea.Cancelled)
                    {
                        tcs.SetCanceled();
                    }
                    else if (ea.Error != null)
                    {
                        tcs.SetException(ea.Error);
                    }
                    else
                    {
                        tcs.SetResult(null);
                    }
                }
            };

            client.SendCompleted += handler;
            client.SendAsync(msg, sendGuid);
            return(tcs.Task);

            /* Enviar */
            //Task sendTask = mail.SendMailAsync(msg); //client.SendAsync(message);
            //sendTask.ContinueWith(task =>
            //{
            //    if (task.IsFaulted)
            //    {
            //        Exception ex = task.Exception.InnerExceptions.First();
            //        //handle error
            //    }
            //    else if (task.IsCanceled)
            //    {
            //        //handle cancellation
            //    }
            //    else
            //    {
            //        //task completed successfully
            //    }
            //});
        }