none
Como incluir consulta en sql para enviar por email mediante C#? RRS feed

  • Pregunta

  • buen día tengo un cs con un código para enviar correo de gmail por medio de c# y necesito incluirle en el cuerpo del email una consulta donde filtro datos por mes de vencimiento de una tabla en sql

    aquí envío lo que tengo:


    namespace MailCursos
    {
       
        class Class1
        {
            static void Main(string[] args)
            {
                MailMessage msg = new MailMessage();


                msg.To.Add(new MailAddress("xxxxxx@gmail.com"));
                msg.From = new MailAddress("xxxxxx@hotmail.com");
                msg.Subject = "reporte de cursos a vencer del mes"; // asunto del correo
                msg.SubjectEncoding = System.Text.Encoding.UTF8;
                msg.Body = "este es el correo";
                       
                SmtpClient clienteSmtp = new SmtpClient("Smtp.gmail.com", 587);

                clienteSmtp.Credentials = new NetworkCredential("xxx.pto@gmail.com", "*a123456");
                clienteSmtp.EnableSsl = true;

                try
                {
                    clienteSmtp.Send(msg);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    Console.ReadLine();
                }


            }

            private static MailMessage MailMessage()
            {
                throw new NotImplementedException();
            }
        }
    }

    martes, 1 de octubre de 2013 13:58

Todas las respuestas

  • Hola.

    Lo primero que necesitaras es crearte algún método que vaya a la base de datos y te recoja el listado que has de mostrar en el cuerpo del mail.

    Luego podrías repasar la lista para in conformando el cuerpo del mail a tu gusto.

    Algo parecido a esto

            public List<string> ObtenerVencimientos()
            {
                List<string> resultado = new List<string>();
                string sqlQuery = "SELECT campo FROM tabla";
                SqlConnection sqlConn = new SqlConnection("{cadena de conexion a base de datos}");
                SqlCommand sqlCmd = new SqlCommand(sqlQuery, sqlConn);
                SqlDataReader rdr;
                try
                {
                    sqlConn.Open();
                    //Si fuese necesario añaidr parametros a la consuilta
                    //sqlCmd.Parameters.Add(new SqlParameter("nombre_parametro",valor));
                    rdr = sqlCmd.ExecuteReader();
                    while(rdr.Read(){
                        resultado.Add(rdr["campo"].ToString());
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally{
                    if(sqlConn!=null) sqlConn.Close();
                }
                return resultado;
            }
    
            private string ObtenerCuerpoCorreo(List<string> resultados)
            {
                string mailBody = "Cabecera del cuerpo del correo.";
                foreach (string item in resultados)
                {
                    mailBody += "texto especifico para cada resultado.";
                }
                mailBody += "Final del mensaje.";
                return mailBody;
            }
    

    Espero que te sea útil.

    Un Saludo.-

    martes, 1 de octubre de 2013 15:00