У меня есть DataTable записей, которые мне нужно добавить в качестве информации на мой шаблон электронной почты htm. В настоящее время то, что я делаю здесь, работает нормально, но это, если у меня только 1 строка записи. Как я могу идти о Добавляя шаблон HTM таким образом, что я могу иметь несколько проводок в электронной почтеC# + Добавить шаблон DataTable в html шаблон электронной почты
например Пример экрана Email (Предполагается, что мой DataTable возвращает 3 рядов записи):
Dear Sir, your daily car posting results:
Image
Toyota
Cambry
$10000
Image
Honda
GT
$10000
Image
Nissan
Sunny
$10000
Loop DataTable ряд:
for (int i = 0; i < dt.Rows.Count; i++)
{
DataRow dr = dt.Rows[i];
primaryImage = dr["PrimaryImage"].ToString();
email = dr["Email"].ToString();
postTitle = dr["Model"].ToString();
model = dr["Model"].ToString();
askingPrice = dr["AskingPrice"].ToString();
var mail = new Email();
mail.IsBodyHtml = true;
mail.MailAddresses = email;
mail.MailSubject = "Test";
mail.HtmFileName = "Email.htm";
var dict = new Dictionary<string, string>
{
{"<%PrimaryImage%>", primaryImage },
{"<%PostTitle%>", postTitle},
{"<%Model%>", model},
{"<%AskingPrice%", askingPrice}
};
mail.Dict = dict;
MailMessage mailMessage;
mailMessage = mail.CreateMailMessage();
Email.Send(mailMessage, 3, 3000, true);
}
}
Создание почтового сообщения:
public MailMessage CreateMailMessage()
{
MailMessage mail = new MailMessage();
mail.IsBodyHtml = IsBodyHtml;
mail.From = new MailAddress("[email protected]", "xxx");
mail.Bcc.Add(MailAddresses);
mail.Subject = MailSubject;
string body = "";
string filePath =
HttpContext.Current.Server.MapPath("~/" + ConfigurationManager.AppSettings["TEMPLATES"] + "/");
if (File.Exists(filePath + HtmFileName))
{
FileStream f = new FileStream(filePath + HtmFileName, FileMode.Open);
StreamReader sr = new StreamReader(f);
body = sr.ReadToEnd();
foreach (var pair in Dict)
{
body = body.Replace(pair.Key, pair.Value);
}
f.Close();
}
mail.Body = body;
mail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess |
DeliveryNotificationOptions.OnFailure;
return mail;
}
Порция шаблона Email.htm:
<body>
<form id="form1" runat="server">
<div style="border: thin solid #E1E1E1; background-color: #F0F0F0; margin-bottom: 10px; padding-top: 3px; padding-bottom: 3px; padding-left:5px;">
Postings
</div>
<div>
<a><img src="<%PrimaryImage%>"/></a>
<br/><br/>
Sell Post Title: <%PostTitle%>
<br/><br/>
Model: <%Model%>
<br/><br/>
Asking Price: <%AskingPrice%>
</div>
</form>
</body>
Не могли бы вы рассказать, как добавить атрибуты к двум различным
Как вы добавляете td? Один из способов добавления атрибута - использовать метод SetAttribute на узле объекта HtmlNode.SetAttributeValue («стиль», значение) – Sameer
Я использую приведенный вами пример. там в foreach добавляя 3 td к innerHtml. Но у меня есть отдельный атрибут для каждого td. теперь я помещаю как строку в td. например "
@ M.S.,: Там должно быть какое-то условие, на основании которого будет решить, какой атрибут идет, к которому тд. Вы можете завершить эту логику некоторым методом и сгенерировать имя класса. Ниже приведен способ создания имени класса на основе rownum.
источник
2015-02-23 06:29:18 Sameer
Спасибо @Sameer. Дает мне представление о том, как его решить. Большой!! Попробуй это. –
Смежные вопросы