我想使用C#发送电子邮件,但发送时使用纯HTML文本,而不是HTML标签。
下面是一些代码。
StringBuilder pl_sbHtml = new StringBuilder();
pl_sbHtml.Append("<html>");
pl_sbHtml.Append("<head>");
pl_sbHtml.Append("</head>");
pl_sbHtml.Append("<body>");
pl_sbHtml.Append("<td>"+ Content Data + "</td>"); // This Content Data is from DB with HTML Tag
pl_sbHtml.Append("</body>");
pl_sbHtml.Append("</html>");
MailAction pl_objMail = new MailAction("Title", pl_sbHtml.ToString(), SmtpHost);
pl_objMail.IsBodyHtml = true;
pl_objMail.AddToMail(TO);
pl_objMail.SetFromMail(FROM);
pl_objMail.UseDefaultCredentials = false;
pl_objMail.SendMail();
电子邮件中的当前结果:
< div style='font:30px'> HELLO < /div>
(可以看到HTML标记。)
电子邮件中的预期结果: HELLO(已应用HTML标记。)
谢谢!
更新
我找到了问题并解决了,但问题是...
数据库中的数据不是带有HTML标记的,而是带有& <<之类的
所以我所做的只是将其替换为正确的单词。
没有这些,我的代码就可以正常工作。
每个在帮助我的人...谢谢!!! :)
答案 0 :(得分:1)
电子邮件内容可能真的很有趣,并且电子邮件客户端也各不相同。我在Outlook中进行了测试
原始内容为< div style='font:30px'> HELLO < /div>
,并且无法正确呈现。经过一番尝试和错误,似乎html标记中的前导空格导致了问题。
尝试
pl_sbHtml.Append("<td>" + "<div style='font:30px'> HELLO </div>" + "</td>");
按预期呈现
在OP上重新注释,只要在设置正文之前或之后设置IsBodyHtml = true
即可,只要您在发送正文之前进行设置即可。
测试代码:
StringBuilder pl_sbHtml = new StringBuilder();
var from = "steve@ste-fu.uk";
var to = "steve@ste-fu.uk";
pl_sbHtml.Append("<html>");
pl_sbHtml.Append("<head>");
pl_sbHtml.Append("</head>");
pl_sbHtml.Append("<body>");
pl_sbHtml.Append("<td>" + "<div style='font:30px'> HELLO </div>" + "</td>");
pl_sbHtml.Append("</body>");
pl_sbHtml.Append("</html>");
MailMessage pl_objMail = new MailMessage();
pl_objMail.Body = pl_sbHtml.ToString();
pl_objMail.IsBodyHtml = true;
pl_objMail.Subject = "Testing";
pl_objMail.To.Add(to);
pl_objMail.From = new MailAddress(from);
var client = new SmtpClient("smtp.ste-fu.uk");
client.Send(pl_objMail);