我正在尝试使用System.Net.Mail.MailMessage()填充电子邮件正文,并使用一个填充的datatable。这是可能的还是错误的方法?
SqlDataAdapter da = new SqlDataAdapter(com);
DataTable dt = new DataTable();
da.Fill(dt);
System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
mail.Body = ? ;发布于 2015-06-25 06:38:09
您可以从所有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();发布于 2015-06-25 06:36:37
当然有可能..。
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() ;发布于 2015-06-25 07:20:27
在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返回的内容。
https://stackoverflow.com/questions/31042782
复制相似问题