none
Colocar datagridview en body de correo en C# RRS feed

  • Pregunta

  • Buen día, 

    Tengo un programa de windows form en C# que ingresa datos de textbox a un datagridview sin base de datos pero quiero mandar el datagridview al body del correo solo que ya busque, pero habrá una forma que no se use HTML. Aún así les comparto un código para pasarlo con html y me sale error de que "no alcanza a enviar el correo":

    ublic static string getHtml(DataGridView dgvDatos)
            {
                try
                {
                    string messageBody = "<font>The following are the records: </font><br><br>";
                    if (dgvDatos.RowCount == 0) return messageBody;
                    string htmlTableStart = "<table style=\"border-collapse:collapse; text-align:center;\" >";
                    string htmlTableEnd = "</table>";
                    string htmlHeaderRowStart = "<tr style=\"background-color:#6FA1D2; color:#ffffff;\">";
                    string htmlHeaderRowEnd = "</tr>";
                    string htmlTrStart = "<tr style=\"color:#555555;\">";
                    string htmlTrEnd = "</tr>";
                    string htmlTdStart = "<td style=\" border-color:#5c87b2; border-style:solid; border-width:thin; padding: 5px;\">";
                    string htmlTdEnd = "</td>";
                    messageBody += htmlTableStart;
                    messageBody += htmlHeaderRowStart;
                    messageBody += htmlTdStart + "Proveedor" + htmlTdEnd;
                    messageBody += htmlTdStart + "Nota Entrada" + htmlTdEnd;
                    messageBody += htmlTdStart + "Factura" + htmlTdEnd;
                    messageBody += htmlTdStart + "Fecha Factura" + htmlTdEnd;
                    messageBody += htmlHeaderRowEnd;
                    for (int i = 0; i <= dgvDatos.RowCount - 1; i++)
                    {
                        messageBody = messageBody + htmlTrStart;
                        messageBody = messageBody + htmlTdStart + dgvDatos.Rows[i].Cells[0].Value + htmlTdEnd; //adding proveedor  
                        messageBody = messageBody + htmlTdStart + dgvDatos.Rows[i].Cells[1].Value + htmlTdEnd; //adding Nota Entrada  
                        messageBody = messageBody + htmlTdStart + dgvDatos.Rows[i].Cells[2].Value + htmlTdEnd; //adding Factura   
                        messageBody = messageBody + htmlTdStart + dgvDatos.Rows[i].Cells[3].Value + htmlTdEnd; //adding FechaFE  
                        messageBody = messageBody + htmlTrEnd;
                    }
                    messageBody = messageBody + htmlTableEnd;
                    return messageBody;
                }
                catch (Exception ex)
                {
                    return null;
                }
            }
    
            public static void Email(string htmlString)
            {
                try
                {
                    MailMessage message = new MailMessage();
                    SmtpClient smtp = new SmtpClient();
                    message.From = new MailAddress("from@gpo.com");
                    message.To.Add(new MailAddress("to@gpo.com")); //change
                    message.Subject = "Acuses";
                    message.IsBodyHtml = true;
                    message.Body = htmlString;
                    //smtp.Port = 587;
                    smtp.Host = "192.168.3.110";
                    smtp.EnableSsl = true;
                    smtp.UseDefaultCredentials = false;
                    smtp.Credentials = new System.Net.NetworkCredential("to@gpo.com", "******");
                    smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
                    smtp.Send(message);
                }
                catch (Exception)
                {
                    ;
                }
            }
    
    
    //Mi botón
     private void btnEnviar_Click(object sender, EventArgs e)
            {
                if (rbtn29.Checked == true)
                {
                    DataGridViewRow dgvfila = new DataGridViewRow();
                    dgvfila.CreateCells(dgvDatos);
    
                    dgvfila.Cells[0].Value = rbtn29.Text;
                    dgvfila.Cells[1].Value = txtNotaEntrada.Text;
                    dgvfila.Cells[2].Value = txtFolioFE.Text;
                    dgvfila.Cells[3].Value = txtFechaFE.Text;
    
                    dgvDatos.Rows.Add(dgvfila);
    
                    rbtn29.Checked = false;
                    txtNotaEntrada.Text = "";
                    txtFolioFE.Text = "";
                    txtFechaFE.Text = "";
                }
                else if (rbtn37.Checked == true)
                {
                    DataGridViewRow dgvfila = new DataGridViewRow();
                    dgvfila.CreateCells(dgvDatos);
    
                    dgvfila.Cells[0].Value = rbtn37.Text;
                    dgvfila.Cells[1].Value = txtNotaEntrada.Text;
                    dgvfila.Cells[2].Value = txtFolioFE.Text;
                    dgvfila.Cells[3].Value = txtFechaFE.Text;
    
                    dgvDatos.Rows.Add(dgvfila);
    
                    rbtn37.Checked = false;
                    txtNotaEntrada.Text = "";
                    txtFolioFE.Text = "";
                    txtFechaFE.Text = "";
                }
    
                string htmlString = getHtml(dgvDatos);
                Email(htmlString);
    }
    

    Espero me puedan ayudar. 

    Gracias 

    miércoles, 19 de junio de 2019 17:20