在电子邮件基础c#中发送gridview

本文关键字:gridview 电子邮件 | 更新日期: 2023-09-27 17:49:35

我想创建一个包含gridview的邮件。我一直在网上搜索,并尝试了多种解决方案。但不知何故,我误解或做错了什么。使用我当前的代码,我得到错误:

System.InvalidOperationException: Data source is an invalid type. It must be either 
an IListSource, IEnumerable, or IDataSource. 

我读了关于使用StringBuilder, StringWriter, HtmlTextWriter, RenderControl等,但仍然不明白如何使其工作。

下面是我的代码:
        public void Email()
    {            
        string conn = "Data Source=pc-..";
        System.Data.SqlClient.SqlConnection sqlConn = new System.Data.SqlClient.SqlConnection(conn);
        sqlConn.Open();
        SqlCommand sendGrid = new SqlCommand("SELECT * FROM tblSomething", sqlConn);
        GridView grd = new GridView();
        if (sendGrid != null)
        {
            grd.DataSource = sendGrid.ExecuteReader();
            grd.DataBind();
        }
        StringBuilder sb = new StringBuilder();
        StringWriter sw = new StringWriter(sb);
        HtmlTextWriter htw = new HtmlTextWriter(sw);
        grd.RenderControl(htw);
        MailMessage mail = new MailMessage();
        mail.To.Add("ToWhoEmail");
        mail.From = new MailAddress("FromWho");
        mail.Subject = "SubjectSomething";
        mail.IsBodyHtml = true;
        mail.BodyFormat = System.Net.Mail.MailMessage.IsBodyHtml.Html;
        // At this line above i get an error. He doesn't recognize BodyFormat = ...;
        // System.Web.Mail.MailFormat is obsolete.
        // The recommended alternative is: System.Net.Mail.MailMessage.IsBodyHtml
        mail.Body = sb.ToString();
        SmtpClient smtp = new SmtpClient("...");
        smtp.Send(mail);}

我也试过在不同的cs文件中制作gridview,并使用:SendGrid.MakeGrid()中的邮件。Body = "…";但所有我得到的是:System.Web.UI.WebControls.GridView在我的电子邮件。感谢所有的帮助,提前谢谢你。

问候,马蒂斯著名

在电子邮件基础c#中发送gridview

问题在这一行:

grd.DataSource = sendGrid;

您正在尝试使用SqlCommand作为网格视图的数据源,这是不可能的。您可以使用数据阅读器或数据集:

grd.DataSource = sendGrid.ExecuteReader();
请确保您通过将这些连接和命令包装在using语句中来正确地处理它们。

在上面的代码中,我没有看到邮件发送....的SMTP设置设置端口号和服务器访问凭证,如gmail的用户名和密码和端口

smtp.gmail.com (use authentication)

Use Authentication: Yes

TLS/STARTTLS端口:587

SSL端口:465

对于网格视图数据源,使用sqlcommand作为数据源是不正确的,请使用dataadapter....