Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: evicar en 7 Enero 2011, 16:57 pm



Título: enviar un datagridview por email c#[SOLUCIONADO]
Publicado por: evicar en 7 Enero 2011, 16:57 pm
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...
(http://img266.imageshack.us/img266/4411/ssssssih.png) (http://img266.imageshack.us/i/ssssssih.png/)

 

Uploaded with ImageShack.us (http://imageshack.us)



Código
  1. private void button1_Click(object sender, EventArgs e)
  2.        {
  3.            SqlConnection cn = new SqlConnection("conexión");
  4.            SqlDataAdapter cm = new SqlDataAdapter("select invtid,desc,qtyord,precilista,preciomargen from soshipline where shipperid='12345'", cn);
  5.            DataSet ds = new DataSet();
  6.            cm.Fill(ds, "soshipline");
  7.  
  8.  
  9.            MailMessage msg = new MailMessage();
  10.  
  11.  
  12.            msg.To.Add(new MailAddress("econtreras@hofmann.cl"));
  13.  
  14.            msg.From = new MailAddress("servidor@hofmann.cl");
  15.  
  16.            msg.Subject = "Venta Bajo Margen";
  17.  
  18.            msg.Body = " Deseo que vaya la Info  detalle productos de la Nota Venta";
  19.  
  20.  
  21.            SmtpClient clienteSmtp = new SmtpClient("smtp.xxxxxxxxxx.cl");
  22.  
  23.  
  24.            // Este es el código nuevo
  25.  
  26.            clienteSmtp.Credentials =
  27.            new NetworkCredential("servidor@hofmann.cl", "xxxxxxxxxxxx");
  28.  
  29.  
  30.  
  31.            try
  32.            {
  33.  
  34.                clienteSmtp.Send(msg);
  35.  
  36.            }
  37.  
  38.            catch (Exception ex)
  39.            {
  40.  
  41.                MessageBox.Show(ex.Message);
  42.  
  43.  
  44.  
  45.            }
  46.        }

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




Saludos






Título: Re: enviar un datagridview por email c#
Publicado por: [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 :)


Título: Re: enviar un datagridview por email c#
Publicado por: evicar en 7 Enero 2011, 17:49 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


Título: Re: enviar un datagridview por email c#
Publicado por: .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
  1. private void button1_Click(object sender, EventArgs e)
  2.        {
  3.            SqlConnection cn = new SqlConnection("conexión");
  4.            SqlDataAdapter cm = new SqlDataAdapter("select invtid,desc,qtyord,precilista,preciomargen from soshipline where shipperid='12345'", cn);
  5.            DataTable dt = New DataTable();
  6.            cm.Fill(dt);
  7.            String datos = ConvertToHtmlFile(dt):
  8.  
  9.            MailMessage msg = new MailMessage();
  10.  
  11.  
  12.            msg.To.Add(new MailAddress("econtreras@hofmann.cl"));
  13.  
  14.            msg.From = new MailAddress("servidor@hofmann.cl");
  15.  
  16.            msg.Subject = "Venta Bajo Margen";
  17.  
  18.            msg.Body = datos;
  19.  
  20.            msg.IsBodyHtml = true;
  21.  
  22.            SmtpClient clienteSmtp = new SmtpClient("smtp.xxxxxxxxxx.cl");
  23.  
  24.  
  25.            // Este es el código nuevo
  26.  
  27.            clienteSmtp.Credentials =
  28.            new NetworkCredential("servidor@hofmann.cl", "xxxxxxxxxxxx");
  29.  
  30.  
  31.  
  32.            try
  33.            {
  34.  
  35.                clienteSmtp.Send(msg);
  36.  
  37.            }
  38.  
  39.            catch (Exception ex)
  40.            {
  41.  
  42.                MessageBox.Show(ex.Message);
  43.  
  44.  
  45.  
  46.            }
  47.        }
  48.  
  49. public static string ConvertToHtmlFile(DataTable targetTable)
  50. {
  51. string myHtmlFile = "";
  52.  
  53.  
  54. if (targetTable == null)
  55. {
  56.  throw new System.ArgumentNullException("targetTable");
  57. }
  58. else
  59. {
  60.  //Continue.
  61. }
  62.  
  63.  
  64. //Get a worker object.
  65. StringBuilder myBuilder = new StringBuilder();
  66.  
  67.  
  68. //Open tags and write the top portion.
  69. myBuilder.Append("<html xmlns='http://www.w3.org/1999/xhtml'>");
  70. myBuilder.Append("<head>");
  71. myBuilder.Append("<title>");
  72. myBuilder.Append("Page-");
  73. myBuilder.Append(Guid.NewGuid().ToString());
  74. myBuilder.Append("</title>");
  75. myBuilder.Append("</head>");
  76. myBuilder.Append("<body>");
  77. myBuilder.Append("<table border='1px' cellpadding='5' cellspacing='0' ");
  78. myBuilder.Append("style='border: solid 1px Silver; font-size: x-small;'>");
  79.  
  80.  
  81. //Add the headings row.
  82.  
  83.  
  84. myBuilder.Append("<tr align='left' valign='top'>");
  85.  
  86.  
  87. foreach (DataColumn myColumn in targetTable.Columns)
  88. {
  89.  myBuilder.Append("<td align='left' valign='top'>");
  90.  myBuilder.Append(myColumn.ColumnName);
  91.  myBuilder.Append("</td>");
  92. }
  93.  
  94.  
  95. myBuilder.Append("</tr>");
  96.  
  97.  
  98. //Add the data rows.
  99. foreach (DataRow myRow in targetTable.Rows)
  100. {
  101.  myBuilder.Append("<tr align='left' valign='top'>");
  102.  
  103.  
  104.  foreach (DataColumn myColumn in targetTable.Columns)
  105.  {
  106.   myBuilder.Append("<td align='left' valign='top'>");
  107.   myBuilder.Append(myRow[myColumn.ColumnName].ToString());
  108.   myBuilder.Append("</td>");
  109.  }
  110.  
  111.  
  112.  myBuilder.Append("</tr>");
  113. }
  114.  
  115.  
  116. //Close tags.
  117. myBuilder.Append("</table>");
  118. myBuilder.Append("</body>");
  119. myBuilder.Append("</html>");
  120.  
  121.  
  122. //Get the string for return.
  123. myHtmlFile = myBuilder.ToString();
  124.  
  125.  
  126. return myHtmlFile;
  127. }


Título: Re: enviar un datagridview por email c#
Publicado por: evicar en 7 Enero 2011, 22:26 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
  1. private void button1_Click(object sender, EventArgs e)
  2.        {
  3.            SqlConnection cn = new SqlConnection("conexión");
  4.            SqlDataAdapter cm = new SqlDataAdapter("select invtid,desc,qtyord,precilista,preciomargen from soshipline where shipperid='12345'", cn);
  5.            DataTable dt = New DataTable();
  6.            cm.Fill(dt);
  7.            String datos = ConvertToHtmlFile(dt):
  8.  
  9.            MailMessage msg = new MailMessage();
  10.  
  11.  
  12.            msg.To.Add(new MailAddress("econtreras@hofmann.cl"));
  13.  
  14.            msg.From = new MailAddress("servidor@hofmann.cl");
  15.  
  16.            msg.Subject = "Venta Bajo Margen";
  17.  
  18.            msg.Body = datos;
  19.  
  20.            msg.IsBodyHtml = true;
  21.  
  22.            SmtpClient clienteSmtp = new SmtpClient("smtp.xxxxxxxxxx.cl");
  23.  
  24.  
  25.            // Este es el código nuevo
  26.  
  27.            clienteSmtp.Credentials =
  28.            new NetworkCredential("servidor@hofmann.cl", "xxxxxxxxxxxx");
  29.  
  30.  
  31.  
  32.            try
  33.            {
  34.  
  35.                clienteSmtp.Send(msg);
  36.  
  37.            }
  38.  
  39.            catch (Exception ex)
  40.            {
  41.  
  42.                MessageBox.Show(ex.Message);
  43.  
  44.  
  45.  
  46.            }
  47.        }
  48.  
  49. public static string ConvertToHtmlFile(DataTable targetTable)
  50. {
  51. string myHtmlFile = "";
  52.  
  53.  
  54. if (targetTable == null)
  55. {
  56.  throw new System.ArgumentNullException("targetTable");
  57. }
  58. else
  59. {
  60.  //Continue.
  61. }
  62.  
  63.  
  64. //Get a worker object.
  65. StringBuilder myBuilder = new StringBuilder();
  66.  
  67.  
  68. //Open tags and write the top portion.
  69. myBuilder.Append("<html xmlns='http://www.w3.org/1999/xhtml'>");
  70. myBuilder.Append("<head>");
  71. myBuilder.Append("<title>");
  72. myBuilder.Append("Page-");
  73. myBuilder.Append(Guid.NewGuid().ToString());
  74. myBuilder.Append("</title>");
  75. myBuilder.Append("</head>");
  76. myBuilder.Append("<body>");
  77. myBuilder.Append("<table border='1px' cellpadding='5' cellspacing='0' ");
  78. myBuilder.Append("style='border: solid 1px Silver; font-size: x-small;'>");
  79.  
  80.  
  81. //Add the headings row.
  82.  
  83.  
  84. myBuilder.Append("<tr align='left' valign='top'>");
  85.  
  86.  
  87. foreach (DataColumn myColumn in targetTable.Columns)
  88. {
  89.  myBuilder.Append("<td align='left' valign='top'>");
  90.  myBuilder.Append(myColumn.ColumnName);
  91.  myBuilder.Append("</td>");
  92. }
  93.  
  94.  
  95. myBuilder.Append("</tr>");
  96.  
  97.  
  98. //Add the data rows.
  99. foreach (DataRow myRow in targetTable.Rows)
  100. {
  101.  myBuilder.Append("<tr align='left' valign='top'>");
  102.  
  103.  
  104.  foreach (DataColumn myColumn in targetTable.Columns)
  105.  {
  106.   myBuilder.Append("<td align='left' valign='top'>");
  107.   myBuilder.Append(myRow[myColumn.ColumnName].ToString());
  108.   myBuilder.Append("</td>");
  109.  }
  110.  
  111.  
  112.  myBuilder.Append("</tr>");
  113. }
  114.  
  115.  
  116. //Close tags.
  117. myBuilder.Append("</table>");
  118. myBuilder.Append("</body>");
  119. myBuilder.Append("</html>");
  120.  
  121.  
  122. //Get the string for return.
  123. myHtmlFile = myBuilder.ToString();
  124.  
  125.  
  126. return myHtmlFile;
  127. }



Estimado funciono perfecto muchas gracias


TEMA SOLUCIONADO