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); }
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); } } }
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(); } }