Exemplo n.º 1
0
        private static void SendMail(EmailInThread emailInThread)
        {
            string subject            = emailInThread.Configuration.Subject;
            string body               = File.ReadAllText(emailInThread.Configuration.BodyPathHtml);
            string from               = emailInThread.Configuration.From;
            string replayTo           = emailInThread.Configuration.ReplayTo;
            string host               = emailInThread.Configuration.Host;
            string port               = emailInThread.Configuration.Port;
            string username           = emailInThread.Configuration.MailUserName;
            string password           = emailInThread.Configuration.MailPassword;
            bool   enableSSL          = emailInThread.Configuration.MailEnableSSL;
            bool   defaultCredentials = emailInThread.Configuration.MailDefaultCredentials;

            MailMessage email = new MailMessage();

            email.To.Add(new MailAddress(emailInThread.Email));
            email.Subject = subject;
            email.From    = new MailAddress(from);
            email.ReplyToList.Add(new MailAddress(replayTo));
            email.Body = body;
            email.From = new MailAddress(from);
            email.ReplyToList.Add(new MailAddress(replayTo));
            //email.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure | DeliveryNotificationOptions.OnSuccess;
            email.IsBodyHtml = true;

            SmtpClient client = new SmtpClient();

            client.Host           = host;
            client.Port           = Convert.ToInt32(port);
            client.DeliveryMethod = SmtpDeliveryMethod.Network;
            if (defaultCredentials)
            {
                client.UseDefaultCredentials = true;
            }
            else
            {
                if (!String.IsNullOrEmpty(username))
                {
                    client.Credentials = new NetworkCredential(username, password);
                }
            }

            client.EnableSsl = enableSSL;
            client.Send(email);
        }
Exemplo n.º 2
0
        private void SendEmailToCustomerInThread(long corridaId, List <Cliente> clienteList)
        {
            EmailConfiguration configuration = new EmailConfiguration();

            configuration.Subject      = ConfigurationManager.AppSettings["MailSubject"];
            configuration.From         = ConfigurationManager.AppSettings["MailFrom"];
            configuration.ReplayTo     = ConfigurationManager.AppSettings["MailReplayTo"];
            configuration.BodyPathHtml = ConfigurationManager.AppSettings["MailBodyPathHtml"];
            configuration.Host         = ConfigurationManager.AppSettings["MailHost"];
            configuration.Port         = ConfigurationManager.AppSettings["MailPort"];

            configuration.MailUserName           = ConfigurationManager.AppSettings["MailUserName"];
            configuration.MailPassword           = ConfigurationManager.AppSettings["MailPassword"];
            configuration.MailEnableSSL          = Convert.ToBoolean(ConfigurationManager.AppSettings["MailEnableSSL"]);
            configuration.MailDefaultCredentials = Convert.ToBoolean(ConfigurationManager.AppSettings["MailDefaultCredentials"]);

            foreach (Cliente cliente in clienteList)
            {
                // Envio 2 emails por cliente
                EmailInThread emailInThread = new EmailInThread();
                emailInThread.CorridaId        = corridaId;
                emailInThread.Cuit             = cliente.CUIT;
                emailInThread.Email            = cliente.EmailContacto;
                emailInThread.Configuration    = configuration;
                emailInThread.ConnectionString = ConfigurationManager.ConnectionStrings["FacturaElectronicaEntities"].ConnectionString;

                ThreadPool.QueueUserWorkItem(SendEmailToCustomer, emailInThread);

                if (!String.IsNullOrEmpty(cliente.EmailContactoSecundario))
                {
                    emailInThread                  = new EmailInThread();
                    emailInThread.CorridaId        = corridaId;
                    emailInThread.Cuit             = cliente.CUIT;
                    emailInThread.Email            = cliente.EmailContactoSecundario;
                    emailInThread.Configuration    = configuration;
                    emailInThread.ConnectionString = ConfigurationManager.ConnectionStrings["FacturaElectronicaEntities"].ConnectionString;

                    ThreadPool.QueueUserWorkItem(SendEmailToCustomer, emailInThread);
                }
            }
        }
Exemplo n.º 3
0
        private void SendEmailToCustomer(object param)
        {
            EmailInThread emailInThread = (EmailInThread)param;

            using (FacturaElectronicaEntities ctx = new FacturaElectronicaEntities(emailInThread.ConnectionString))
            {
                try
                {
                    SendMail(emailInThread);
                    GenerarLog(ctx, emailInThread.CorridaId, string.Format("Email enviado a {0}", emailInThread.Email));
                }
                catch (Exception ex)
                {
                    string exceptionMessage = GetExceptionMessage(ex);
                    string exceptionStack   = GetExceptionStackTrace(ex);
                    GenerarLog(ctx, emailInThread.CorridaId, string.Format("Email enviado a {0} con error {1}", emailInThread.Email, exceptionMessage + exceptionStack));
                }

                ctx.SaveChanges();
            }
        }