如何使用C#发送带有HTML标签而不是HTML纯文本的电子邮件

时间:2019-05-20 10:31:38

标签: c# html email smtp

我想使用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标记的,而是带有 <<之类的

所以我所做的只是将其替换为正确的单词。

没有这些,我的代码就可以正常工作。

每个在帮助我的人...谢谢!!! :)

1 个答案:

答案 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);