SQL Server数据表填充System.Net.Mail正文

本文关键字:Net Mail 正文 System 填充 Server 数据表 SQL | 更新日期: 2023-09-27 17:59:41

我正试图使用System.Net.Mail.MailMessage()填充一个带有填充数据表的电子邮件正文。这是可能的还是错误的方法?

    SqlDataAdapter da = new SqlDataAdapter(com);
    DataTable dt = new DataTable();  
    da.Fill(dt);
    System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
    mail.Body =  ?  ;

SQL Server数据表填充System.Net.Mail正文

您可以从所有rows中获取data并将其存储在string中,然后像这样将此字符串分配给mail.Body

StringBuilder sb=new StringBuilder();
foreach (DataRow dr in dt.Rows)
{
    sb.Append(dr["columnName"].ToString() + "<br />");
}
mail.Body = sb.ToString();

当然有可能。。

SqlDataAdapter da = new SqlDataAdapter(com);
DataTable dt = new DataTable();  
da.Fill(dt);
System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
mail.Body =  dt.Table[your_table].Rows[your_row][your_coulmn].ToString()  ;

在5年前的一个项目中,我使用这种方式生成HtmlTable,并从类似HtmlTable的项目中获得一个字符串;

public static HtmlTable GenerateHtmlTableForMail(DataTable dt)
{
        HtmlTable retval = new HtmlTable();
        HtmlTableRow tr = new HtmlTableRow();
        HtmlTableCell td = new HtmlTableCell();
        foreach (DataColumn col in dt.Columns)
        {
            td = new HtmlTableCell();
            td.InnerText = col.ColumnName;
            tr.Cells.Add(td);
        }
        retval.Rows.Add(tr);
        foreach (DataRow row in dt.Rows)
        {
            tr = new HtmlTableRow();
            foreach (DataColumn col in dt.Columns)
            {
                td = new HtmlTableCell();
                td.InnerText = row[col].ToString();
            }
            retval.Rows.Add(tr);
        }
        return retval;
}

public static string GetHtmlTableString(HtmlTable table)
{
    string retval = "";
    StringWriter sw = new StringWriter();
    HtmlTextWriter htw = new HtmlTextWriter(sw);
    table.RenderControl(htw);
    return sw.ToString();
}

在您的情况下,您可以将GetHtmlTableString返回的内容分配给mail.Body属性。