/// <summary> /// Envia email par ao aniversariante /// </summary> /// <param name="id"></param> public void EnviaEmail(string id) { // Defino novo objeto de banco de dados var objDb = new DatabaseHelper("aniversariantes"); // Defino novo sql var query = String.Format("SELECT A.id, A.c_nome, A.c_email, B.t_mensagem, B.c_titulo FROM dados.aniversariantes A, dados.mensagem B WHERE A.id = '{0}' AND A.n_mensagem_id = B.id AND A.b_ativo = true AND A.b_deletado = false AND B.b_deletado = false",id); // Executo o SQL var result = objDb.GetDataTable(query); // Executo forEach para pegar os campos foreach (DataRow row in result.Rows) { // Defino id do usuario var idUsuario = row["id"].ToString(); // Defino o nome do aniversariante var nome = row["c_nome"].ToString(); // Defino email do Aniversariante var email = row["c_email"].ToString(); // Defino titulo da mensagem var tituloMensagem = row["c_titulo"].ToString(); // Defino codigo da mensagem var mensagem = row["t_mensagem"].ToString(); // Troca palavras chave dentro da mensagem //TODO - Cadastro de palavras chaves e um loop para substitiuir todas mensagem = mensagem.Replace("[NOMEANIVERSARIANTE]", nome); // Pega data atual var cDia = DateTime.Now.ToString("dd"); var cMes = DateTime.Now.ToString("MM"); var cAno = DateTime.Now.ToString("yyyy"); // Defino data de envio var dDataEnvio = DateTime.Now.ToString("dd/MM/yy"); // Define novo objeto de Smtp var client = new SmtpClient(); // Define host client.Host = "smtp.gmail.com"; // Define porta client.Port = 587; // Define se usa ssl client.EnableSsl = true; // Define método de envio client.DeliveryMethod = SmtpDeliveryMethod.Network; // Define para não usar credenciais client.UseDefaultCredentials = false; // Define endereço de origem var fromAddress = new MailAddress("*****@*****.**", "Master Auto Parts"); // Define senha var fromPassword = "******"; // Define credencial var credencial = new NetworkCredential(fromAddress.Address, fromPassword); // Define endereço de destino var toAddress = new MailAddress(email, nome); // Define assunto const string subject = "Feliz aniversário"; // Defome credenciais client.Credentials = credencial; // Define novo objeto de email var mail = new MailMessage(fromAddress, toAddress); mail.Subject = subject; mail.IsBodyHtml = true; mail.Body = mensagem; try { // Tenta enviar o email client.Send(mail); // Cria novo objeto de Database var objInserir = new DatabaseHelper("aniversariantes"); // Gera lista com dados a serem inseridos var lista = new Dictionary<string, string>(); // Adiciona campos na lista com os respectivos valores lista.Add("c_nome", nome); lista.Add("c_email", email); lista.Add("t_mensagem", mensagem); lista.Add("c_titulo_mensagem",tituloMensagem); lista.Add("d_data_envio", dDataEnvio); lista.Add("c_dia", cDia); lista.Add("c_mes", cMes); lista.Add("c_ano", cAno); lista.Add("n_aniversarianteid", id); // Chama método que insere os usuarios na tabela passando os parametros if (objInserir.Insert("dados.historico", lista)) { // Adiciona informação na listview Envios.Add(new EnviosRecentes { Nome = nome, Email = email, DataEnvio = dDataEnvio }); } else { MessageBox.Show("Ocorreu um erro ao tentar cadastrar o envio de email"); Close(); } } catch (Exception erro) { // Trata mensagem de erro MessageBox.Show("Ocorreu o seguinte erro ao tentar enviar o email:\n" + erro); Close(); } } }
public void VerificaEmail() { // Pega data atual cDia = DateTime.Now.ToString("dd"); cMes = DateTime.Now.ToString("MM"); cAno = DateTime.Now.ToString("yyyy"); // Seleciona todos os aniversariantes do dia var objDB = new DatabaseHelper("aniversariantes"); // Gero query que vai retornar os aniversariantes do dia var query = String.Format("SELECT id, c_nome, c_email, n_mensagem_id, n_dia, n_mes FROM dados.aniversariantes WHERE n_dia = '{0}' AND n_mes = '{1}' AND b_ativo = true AND b_deletado = false ORDER BY id",cDia,cMes); // Salvo os aniversariantes em um DataTable var AniversariantesDeHoje = objDB.GetDataTable(query); // Para cada linha do DataTable foreach (DataRow row in AniversariantesDeHoje.Rows) { // Defino id do usuario var idUsuario = row["id"].ToString(); // Gero novo objeto de acesso ao banco de dados var objAniversariante = new DatabaseHelper("aniversariantes"); // Gero Sql para verificar se já foi enviado um email para este usuário nesta data var query2 = String.Format("SELECT * FROM dados.historico WHERE n_aniversarianteid = '{0}' AND c_dia = '{1}' AND c_mes = '{2}' AND c_ano = '{3}' AND b_deletado = false",idUsuario,cDia,cMes,cAno); // Executo o query e salvo na variavel result var result = objAniversariante.ExecuteScalar(query2); // Se não existir a mensagem ainda, ou seja, não foi enviado email para este usuário if (string.IsNullOrEmpty(result)) { EnviaEmail(idUsuario); } } }