public override void Inicializar(params object[] args) { base.Inicializar(args); ctrl = new CtrlEMail(); OperacaoAtual = Operacao.Navegar; }
public override int Executar() { if (XMLComandoSQL.Debugar) return 0; Configurar(); CtrlEMail ctrlEmail = new CtrlEMail(); EmailDB email = ctrlEmail.BuscaID(XMLComandoSQL.IDEmail); if (email != null) { MatchCollection tags = Regex.Matches(email.CorpoMensagem, "<%(.*?)%>"); Dictionary<string, int> campos = new Dictionary<string, int>(); using (IDataReader leitor = BaseOrigem.ExecutaLeitura(ComandoSQL.RemoverComentarios())) { if (leitor != null) { List<MailMessage> emails = new List<MailMessage>(); foreach (Match item in tags) { string tag = item.Value.Replace("<%", "").Replace("%>", ""); if (!campos.ContainsKey(tag)) campos.Add(tag, IndexCampo(tag, leitor)); } if (campos.ContainsValue(-1)) { throw new Exception("O Comando SQL de origem não possui todas as 'TAGS' necessárias para formular o E-Mail."); } else { bool enviar = false; while (leitor.Read()) { enviar = true; string para = Convert.ToString(leitor["Para"]); string corpo = email.CorpoMensagem; foreach (KeyValuePair<string, int> item in campos) corpo = corpo.Replace("<%" + item.Key + "%>", Convert.ToString(leitor.GetValue(item.Value))); MailMessage mail = new MailMessage(); mail.IsBodyHtml = true; mail.From = new MailAddress("*****@*****.**"); mail.Subject = email.Assunto; mail.Body = corpo; mail.To.Add(para); emails.Add(mail); } SmtpClient client = new SmtpClient(); client.Port = 587; client.Host = "smtp.fei.edu.br"; client.EnableSsl = false; client.UseDefaultCredentials = false; client.DeliveryMethod = SmtpDeliveryMethod.Network; var mails = emails.Select(mail => mail.To.ToString().Distinct()); if (enviar) foreach (MailMessage item in emails) client.Send(item); } } } } return 0; }
public override int Executar() { if (XMLComandoSQL.Debugar) return 0; Configurar(); CtrlEMail ctrlEmail = new CtrlEMail(); EmailDB email = ctrlEmail.BuscaID(XMLComandoSQL.IDEmail); if (email != null) { using (IDataReader leitor = BaseOrigem.ExecutaLeitura(ComandoSQL.RemoverComentarios())) { MatchCollection tags = Regex.Matches(email.CorpoMensagem, "<%(.*?)%>"); if (leitor != null && tags[0].Value.ToLower() == "<%tabela%>") { string linha = ""; string linhas = ""; string cabecalho = ""; for (int i = 0; i < leitor.FieldCount; i++) cabecalho += "" + "<th class='coluna cabecalho'><span style='font-family: Calibri, Verdana, Arial; color: #555; font-size: 1.1em;'>" + leitor.GetName(i) + "</span></th>"; linhas = string.Format("<thead><tr>{0}</tr></thead><tbody>", cabecalho); int par = 0; bool enviar = false; while (leitor.Read()) { linha = ""; enviar = true; for (int i = 0; i < leitor.FieldCount; i++) linha += string.Format("" + "<td class='coluna " + leitor.GetName(i) + "' style='border-top:solid #7F7F7F 1.0pt;border-left:none;border-right:none;padding:0cm 5.4pt 0cm 5.4pt;'>" + "<span style='font-family: Calibri, Verdana, Arial; color: #555; font-size: 1.1em;'>" + "{0}</span></td>", Convert.ToString(leitor[i])); ++par; linhas += "" + "<tr class='linha'" + (par % 2 == 0 ? "" : "style='background-color:#eee;'") + ">" + linha + "</tr>" + Environment.NewLine; } linhas += "</tbody>" + Environment.NewLine; string tabela = string.Format("<table class='tabela' cellspacing=0 cellpadding=0>{0}</table>", linhas.ToString()); string para = XMLComandoSQL.Para; string de = XMLComandoSQL.De; //string para = "*****@*****.**"; string corpo = email.CorpoMensagem.Replace(tags[0].Value, tabela); MailMessage mail = new MailMessage(de, para, email.Assunto, corpo); mail.IsBodyHtml = true; SmtpClient smtp = new SmtpClient("smtp.fei.edu.br", 587); smtp.EnableSsl = false; smtp.UseDefaultCredentials = false; smtp.DeliveryMethod = SmtpDeliveryMethod.Network; if (enviar) smtp.Send(mail); } } } return 0; }