将Datagridview发送到电子邮件

时间:2013-05-14 15:49:37

标签: c# winforms

我制作了一个代码,我可以使用c#向gmail.com发送电子邮件,但它运行良好。 现在我想将我的datagridview1放在电子邮件正文中并发送它。 Somone可以告诉我如何做到这一点? 我搜索了很多,但我只发现了无用的信息和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);


    }

3 个答案:

答案 0 :(得分:3)

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

此外,mail.Body接受字符串值:)。你只是不能为它分配一个完整的datagridview,即

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

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

的等效html表

所以你应该做的是遍历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); 

 }      

答案 1 :(得分:3)

您需要遍历数据网格视图的Rows集合,提取值并分配给mail.Body。一个粗略的例子: -

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

mail.Body = sb.ToString();

答案 2 :(得分:0)

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

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

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

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