2

我编写了一个代码,我可以使用 c# 向 gmail.com 发送电子邮件,并且运行良好。现在我想将我的 datagridview1 放在电子邮件正文中并发送。有人可以告诉我我该怎么做吗?我搜索了很多,但我只找到了无用的信息和 asp.net 代码。

这是我发送电子邮件的实际代码。我的 datagridview 名称是:datagridview1

 private void btnSend_Click_1(object sender, EventArgs e)
    {
        // Create a message with datagridview contents in its body and set up the recipients.





        var client = new SmtpClient("smtp.gmail.com", 587);
        client.EnableSsl = true;
        client.Credentials = new NetworkCredential("jpbritopoker@gmail.com", "*****");

        var mail = new MailMessage();
        mail.From = new MailAddress("youraccount@yahoo.com");
        mail.To.Add("jpbritopoker@gmail.com");
        mail.Subject = "This is the subject of the mail";
        mail.Body = "Here i want my datagridview1";
        client.Send(mail);


    }
4

3 回答 3

3

DataGridView是 Dot Net 的一个特殊工具,而您的电子邮件(在浏览器中打开)对此一无所知。

此外,mail.Body接受一个字符串值:)。您只是不能将整个datagridview分配给它,即

mail.Body = dataGridView1.ToString(); //wrong, utter useless

但是,浏览器确实知道 html。让我们做一件事,让我们创建等效的 html 表dataGridView

因此,您应该做的是遍历 GridView 的每一行并创建 html 字符串并将其分配给mail.Body.

在您的方法中执行以下操作:

 private void btnSend_Click_1(object sender, EventArgs e)
 {
      string mailBody = "<table width='100%' style='border:Solid 1px Black;'>";

      foreach (DataGridViewRow row in dataGridView1.Rows)
      {
            mailBody +="<tr>";
            foreach (DataGridViewCell cell in row.Cells)
            {
               mailBody +="<td stlye='color:blue;'>" +cell.Value + "</td>";
            }
            mailBody +="</tr>";
      }
      mailBody +="</table>";

      //your rest of the original code
      mail.Body = mailBody;
      client.Send(mail); 

 }      
于 2013-05-14T15:53:06.457 回答
3

您需要遍历Rowsdatagridview 的集合,提取值并分配给您的mail.Body. 一个粗略的例子: -

StringBuilder sb = new StringBuilder();
foreach (DataRow row in datagridview1.Rows)
{
      sb.AppendLine(row["ROW NAME"].ToString());
}

mail.Body = sb.ToString();
于 2013-05-14T15:57:47.810 回答
0

DataGridView 首先是一个 WinForm-Control(或:一个对象)。你可以做的是,例如:

  1. 遍历 dgv 的所有数据项并创建一个表格或列表以将其设置为电子邮件正文。

  2. 如果您不仅要导出内容而且要导出整个对象结构,则可以通过序列化将整个对象导出到 xml/json。

  3. 您还可以将序列化对象作为附件添加到电子邮件中。

于 2013-05-14T15:57:02.447 回答