SQL Server数据表填充System.Net.Mail Body

时间:2015-06-25 06:28:08

标签: c# sql-server tsql azure

我尝试使用带有填充数据表的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 =  ?  ;

3 个答案:

答案 0 :(得分:1)

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

StringBuilder sb=new StringBuilder();

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

答案 1 :(得分:0)

当然有可能..

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()  ;

答案 2 :(得分:0)

在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();
}

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