enviar un datagridview por email c#[SOLUCIONADO]

Iniciado por evicar, 7 Enero 2011, 16:57 PM

0 Miembros y 1 Visitante están viendo este tema.

evicar

estimados... denuevo con una consulta.

quiero hacer un programita que me envia el de detalle de una orden de venta por email, esto lo obtengo atraves de una consulta sencilla en sql ...
la cosa, es que no se como enviar en el cuerpo del mensaje esta informacion..
mi intencion es enviar una especie de datagridview, solo el formato texto... no se si me logro explicar les adjunto una ss de como quiero que llegue el mail...




Uploaded with ImageShack.us



Código (csharp) [Seleccionar]
private void button1_Click(object sender, EventArgs e)
       {
           SqlConnection cn = new SqlConnection("conexión");
           SqlDataAdapter cm = new SqlDataAdapter("select invtid,desc,qtyord,precilista,preciomargen from soshipline where shipperid='12345'", cn);
           DataSet ds = new DataSet();
           cm.Fill(ds, "soshipline");


           MailMessage msg = new MailMessage();

           
           msg.To.Add(new MailAddress("econtreras@hofmann.cl"));

           msg.From = new MailAddress("servidor@hofmann.cl");

           msg.Subject = "Venta Bajo Margen";

           msg.Body = " Deseo que vaya la Info  detalle productos de la Nota Venta";


           SmtpClient clienteSmtp = new SmtpClient("smtp.xxxxxxxxxx.cl");

           
           // Este es el código nuevo

           clienteSmtp.Credentials =
           new NetworkCredential("servidor@hofmann.cl", "xxxxxxxxxxxx");



           try
           {

               clienteSmtp.Send(msg);

           }

           catch (Exception ex)
           {

               MessageBox.Show(ex.Message);

               

           }
       }


Resumiendo necesito enviar la el resultado de la consulta que tengo en el DataSet en el cuerpo del mensaje.




Saludos





[D4N93R]

En vez de poner ese texto, construyes un Html con tablas y le pones esto:

msg.IsBodyHtml = true;

Y listo :)

evicar

Cita de: [D4N93R] en  7 Enero 2011, 17:39 PM
En vez de poner ese texto, construyes un Html con tablas y le pones esto:

msg.IsBodyHtml = true;

Y listo :)

y como podria lograr eso...???? con lo de html y tablas me perdi... xD


Saludos

.mokk.

#3
Bueno buscando en google hay formas de convertir un DataTable a Html, por lo que nos facilitara el trabajo ^^
Al final el codigo podria quedarnos asi :P

Código (csharp) [Seleccionar]

private void button1_Click(object sender, EventArgs e)
        {
            SqlConnection cn = new SqlConnection("conexión");
            SqlDataAdapter cm = new SqlDataAdapter("select invtid,desc,qtyord,precilista,preciomargen from soshipline where shipperid='12345'", cn);
            DataTable dt = New DataTable();
            cm.Fill(dt);
            String datos = ConvertToHtmlFile(dt):

            MailMessage msg = new MailMessage();


            msg.To.Add(new MailAddress("econtreras@hofmann.cl"));

            msg.From = new MailAddress("servidor@hofmann.cl");

            msg.Subject = "Venta Bajo Margen";

            msg.Body = datos;
           
            msg.IsBodyHtml = true;

            SmtpClient clienteSmtp = new SmtpClient("smtp.xxxxxxxxxx.cl");


            // Este es el código nuevo

            clienteSmtp.Credentials =
            new NetworkCredential("servidor@hofmann.cl", "xxxxxxxxxxxx");



            try
            {

                clienteSmtp.Send(msg);

            }

            catch (Exception ex)
            {

                MessageBox.Show(ex.Message);



            }
        }

public static string ConvertToHtmlFile(DataTable targetTable)
{
string myHtmlFile = "";


if (targetTable == null)
{
  throw new System.ArgumentNullException("targetTable");
}
else
{
  //Continue.
}


//Get a worker object.
StringBuilder myBuilder = new StringBuilder();


//Open tags and write the top portion.
myBuilder.Append("<html xmlns='http://www.w3.org/1999/xhtml'>");
myBuilder.Append("<head>");
myBuilder.Append("<title>");
myBuilder.Append("Page-");
myBuilder.Append(Guid.NewGuid().ToString());
myBuilder.Append("</title>");
myBuilder.Append("</head>");
myBuilder.Append("<body>");
myBuilder.Append("<table border='1px' cellpadding='5' cellspacing='0' ");
myBuilder.Append("style='border: solid 1px Silver; font-size: x-small;'>");


//Add the headings row.


myBuilder.Append("<tr align='left' valign='top'>");


foreach (DataColumn myColumn in targetTable.Columns)
{
  myBuilder.Append("<td align='left' valign='top'>");
  myBuilder.Append(myColumn.ColumnName);
  myBuilder.Append("</td>");
}


myBuilder.Append("</tr>");


//Add the data rows.
foreach (DataRow myRow in targetTable.Rows)
{
  myBuilder.Append("<tr align='left' valign='top'>");


  foreach (DataColumn myColumn in targetTable.Columns)
  {
   myBuilder.Append("<td align='left' valign='top'>");
   myBuilder.Append(myRow[myColumn.ColumnName].ToString());
   myBuilder.Append("</td>");
  }


  myBuilder.Append("</tr>");
}


//Close tags.
myBuilder.Append("</table>");
myBuilder.Append("</body>");
myBuilder.Append("</html>");


//Get the string for return.
myHtmlFile = myBuilder.ToString();


return myHtmlFile;
}

evicar

Cita de: .mokk. en  7 Enero 2011, 22:02 PM
Bueno buscando en google hay formas de convertir un DataTable a Html, por lo que nos facilitara el trabajo ^^
Al final el codigo podria quedarnos asi :P

Código (csharp) [Seleccionar]

private void button1_Click(object sender, EventArgs e)
        {
            SqlConnection cn = new SqlConnection("conexión");
            SqlDataAdapter cm = new SqlDataAdapter("select invtid,desc,qtyord,precilista,preciomargen from soshipline where shipperid='12345'", cn);
            DataTable dt = New DataTable();
            cm.Fill(dt);
            String datos = ConvertToHtmlFile(dt):

            MailMessage msg = new MailMessage();


            msg.To.Add(new MailAddress("econtreras@hofmann.cl"));

            msg.From = new MailAddress("servidor@hofmann.cl");

            msg.Subject = "Venta Bajo Margen";

            msg.Body = datos;
           
            msg.IsBodyHtml = true;

            SmtpClient clienteSmtp = new SmtpClient("smtp.xxxxxxxxxx.cl");


            // Este es el código nuevo

            clienteSmtp.Credentials =
            new NetworkCredential("servidor@hofmann.cl", "xxxxxxxxxxxx");



            try
            {

                clienteSmtp.Send(msg);

            }

            catch (Exception ex)
            {

                MessageBox.Show(ex.Message);



            }
        }

public static string ConvertToHtmlFile(DataTable targetTable)
{
string myHtmlFile = "";


if (targetTable == null)
{
  throw new System.ArgumentNullException("targetTable");
}
else
{
  //Continue.
}


//Get a worker object.
StringBuilder myBuilder = new StringBuilder();


//Open tags and write the top portion.
myBuilder.Append("<html xmlns='http://www.w3.org/1999/xhtml'>");
myBuilder.Append("<head>");
myBuilder.Append("<title>");
myBuilder.Append("Page-");
myBuilder.Append(Guid.NewGuid().ToString());
myBuilder.Append("</title>");
myBuilder.Append("</head>");
myBuilder.Append("<body>");
myBuilder.Append("<table border='1px' cellpadding='5' cellspacing='0' ");
myBuilder.Append("style='border: solid 1px Silver; font-size: x-small;'>");


//Add the headings row.


myBuilder.Append("<tr align='left' valign='top'>");


foreach (DataColumn myColumn in targetTable.Columns)
{
  myBuilder.Append("<td align='left' valign='top'>");
  myBuilder.Append(myColumn.ColumnName);
  myBuilder.Append("</td>");
}


myBuilder.Append("</tr>");


//Add the data rows.
foreach (DataRow myRow in targetTable.Rows)
{
  myBuilder.Append("<tr align='left' valign='top'>");


  foreach (DataColumn myColumn in targetTable.Columns)
  {
   myBuilder.Append("<td align='left' valign='top'>");
   myBuilder.Append(myRow[myColumn.ColumnName].ToString());
   myBuilder.Append("</td>");
  }


  myBuilder.Append("</tr>");
}


//Close tags.
myBuilder.Append("</table>");
myBuilder.Append("</body>");
myBuilder.Append("</html>");


//Get the string for return.
myHtmlFile = myBuilder.ToString();


return myHtmlFile;
}




Estimado funciono perfecto muchas gracias


TEMA SOLUCIONADO