2015-06-25 68 views
0

我想用填充的數據表填充正在使用System.Net.Mail.MailMessage()的電子郵件正文。這是可能的還是錯誤的方法?SQL Server數據表填充System.Net.Mail正文

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

什麼是內部數據表?它是單行還是多行? – Mairaj

+2

您不能將其分配給DataTable。您可以生成DataTable的HTML表示形式作爲字符串並將其分配給此屬性。 –

+0

多行@Mairaj。 –

回答

1

你可以得到所有rowsdata並將其存儲在一個string比這個字符串賦值給mail.Body這樣。

StringBuilder sb=new StringBuilder(); 

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

工作像治療謝謝@Mairaj! –

+0

@KyleGMotion不用客氣。 – Mairaj

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

這工作非常好,謝謝@sangram –

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回報。