使用标头将datagridview作为邮件发送

时间:2017-08-30 05:34:13

标签: c# winforms email datagridview

这是我将datagridview作为电子邮件发送的代码。这段代码只需在datagridview中发送数据就可以了。

请指导我如何在其中添加表格标题。我希望将电子邮件作为整个表格发送,包括表格标题。

var client = new SmtpClient("smtp.gmail.com", 587);
client.EnableSsl = true;
client.Credentials = new NetworkCredential("from_mail", "password");

var mail = new MailMessage();
mail.From = new MailAddress("from_mail");
mail.To.Add("to_mail");
mail.IsBodyHtml = true;
mail.Subject = "test";

string mailBody = "<table width='100%' style='border:Solid 1px Black;'>";

foreach (DataGridViewRow row in dataGridView2.Rows)
{
    mailBody += "<tr>";
    foreach (DataGridViewCell cell in row.Cells)
    {
        mailBody += "<td>" + cell.Value + "</td>";
    }
    mailBody += "</tr>";
}
mailBody += "</table>";

//your rest of the original code
mail.Body = mailBody;
client.Send(mail);
MessageBox.Show("mail send");
this.Close();

1 个答案:

答案 0 :(得分:1)

要将DataGridView转换为HTML以便通过电子邮件发送,请使用以下功能:

private StringBuilder DataGridtoHTML(DataGridView dg)
{
  StringBuilder strB = new StringBuilder();

  //create html & table
  strB.AppendLine("<html><body><center><" + 
                "table border='1' cellpadding='0' cellspacing='0'>");
  strB.AppendLine("<tr>");

  //create table header
  for (int i = 0; i < dg.Columns.Count; i++)
  {
     strB.AppendLine("<td align='center' valign='middle'>" + 
                    dg.Columns[i].HeaderText + "</td>");
  }

  //create table body
  strB.AppendLine("<tr>");
  for (int i = 0; i < dg.Rows.Count; i++)
  {
    strB.AppendLine("<tr>");
    foreach (DataGridViewCell dgvc in dg.Rows[i].Cells)
        {
            strB.AppendLine("<td align='center' valign='middle'>" + 
                            dgvc.Value.ToString() + "</td>");
        }
    strB.AppendLine("</tr>");   
  }

  //table footer & end of html file   
  strB.AppendLine("</table></center></body></html>");
  return strB;
}