我尝试使用带有填充数据表的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 = ? ;
答案 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
返回的内容。