發送電子郵件我正在使用MailMessage
創建一封電子郵件,並且希望嵌入一張動態填充的表格。我已將MailMessage
屬性設置爲IsBodyHtml
,所以我已經能夠將HTML編碼文本插入到電子郵件的正文中。使用它可以輕鬆創建表格的頂部和底部,但創建行看起來像是一個噩夢。用
該表將有6列和可變數量的行將從一個集合填充。請求者不希望將數據作爲附件發送。
關於如何最好地開發更好的解決方案的任何建議?
在此先感謝
發送電子郵件我正在使用MailMessage
創建一封電子郵件,並且希望嵌入一張動態填充的表格。我已將MailMessage
屬性設置爲IsBodyHtml
,所以我已經能夠將HTML編碼文本插入到電子郵件的正文中。使用它可以輕鬆創建表格的頂部和底部,但創建行看起來像是一個噩夢。用
該表將有6列和可變數量的行將從一個集合填充。請求者不希望將數據作爲附件發送。
關於如何最好地開發更好的解決方案的任何建議?
在此先感謝
這真的不是一個StringBuilder
噩夢都沒有。
你可以建立一個類,將其稱爲TableBuilder
或任何你想要的,將封裝這個邏輯。
public class TableBuider
{
private StringBuilder builder = new StringBuilder();
public string[] BodyData { get; set; }
public int BodyRows { get; set; }
public TableBuider(int bodyRows, string[] bodyData)
{
BodyData = bodyData;
BodyRows = bodyRows;
}
/// <summary>
/// Since your table headers are static, and your table body
/// is variable, we don't need to store the headers. Instead
/// we need to know the number of rows and the information
/// that goes in those rows.
/// </summary>
public TableBuider(string[] tableInfo, int bodyRows)
{
BodyData = tableInfo;
BodyRows = bodyRows;
}
public string BuildTable()
{
BuildTableHead();
BuildTableBody();
return builder.ToString();
}
private void BuildTableHead()
{
builder.Append("<table>");
builder.Append("<thead>");
builder.Append("<tr>");
AppendTableHeader("HeaderOne");
AppendTableHeader("HeaderTwo");
builder.Append("</tr>");
builder.Append("</thead>");
}
private void BuildTableBody()
{
builder.Append("<tbody>");
builder.Append("<tr>");
// For every row we need added, append a <td>info</td>
// to the table from the data we have
for (int i = 0; i < BodyRows; i++)
{
AppendTableDefinition(BodyData[i]);
}
builder.Append("</tr>");
builder.Append("</table");
}
private void AppendTableHeader(string input)
{
AppendTag("th", input);
}
private void AppendTableDefinition(string input)
{
AppendTag("td", input);
}
private void AppendTag(string tag, string input)
{
builder.Append("<" + tag + ">");
builder.Append(input);
builder.Append("</" + tag + ">");
}
}
}
的AppendTableHeader
,AppendTableDefinition
,和AppendTag
方法封裝所有StringBuilder
的繁瑣部件。
這只是一個基本的例子,你也可以建立它。
本文是Lightswitch特定的。但示例代碼顯示瞭如何使用XHTML和嵌入式LINQ表達式在HTML電子郵件中填充變量行表。我認爲你應該能夠適應它來適應你的應用。
我剛剛更新了我的TableBuilder類,以更具體地滿足您的需求。這個類的頭部是硬編碼的,因爲你提到它們總是一樣的。但是,由於行是可變的,因此該類將佔用行數和將填充其中的數據。我希望這有幫助! –