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

Posted

技术标签:

【中文标题】如何发送带有 HTML 标签的电子邮件,而不是 C# 中的 HTML 纯文本【英文标题】:How to send an email with HTML tag, not a HTML plain text in C# 【发布时间】:2019-10-06 17:08:56 【问题描述】:

我想使用 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();

电子邮件中的当前结果: &lt; div style='font:30px'&gt; HELLO &lt; /div&gt;(可以看到 HTML 标签。)

电子邮件中的预期结果:

HELLO(应用的 HTML 标签。) 谢谢 !

【问题讨论】:

将电子邮件正文类型更改为 html 而不是文本 @UK_Dev 参考代码:pl_objMail.IsBodyHtml = true;。 OP 已经这样做了 在添加html正文之前也要设置格式,还要确保它有body和html标签 什么是MailAction?我找不到它的参考文档 @KUNWOOMYUNG 你能添加你的MailAction类吗? 【参考方案1】:

电子邮件内容真的很有趣,而且电子邮件客户端也各不相同。我在 Outlook 中对此进行了测试

&lt; div style='font:30px'&gt; HELLO &lt; /div&gt;的原声明内容

它没有正确渲染。经过一些试验和错误,似乎 html 标记中的前导空格导致了问题。

尝试

pl_sbHtml.Append("&lt;td&gt;" + "&lt;div style='font:30px'&gt; HELLO &lt;/div&gt;" + "&lt;/td&gt;");

按预期渲染

还是OP上的cmets,IsBodyHtml = true是设置body之前设置还是之后设置都没有关系,只要在发送之前设置就行了。

测试代码:

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

【讨论】:

谢谢@ste-fu,但我发现问题出在另一边...但是谢谢您的回复!!

以上是关于如何发送带有 HTML 标签的电子邮件,而不是 C# 中的 HTML 纯文本的主要内容,如果未能解决你的问题,请参考以下文章

使用 SmtpClient 时如何保存电子邮件而不是发送?

如何使用 Outlook 2010(无 smtp)和 python 发送带有嵌入图像(不是附件)的 HTML 格式电子邮件

如何在 Gmail 中使用标签来识别单个邮件,而不是已由脚本处理的线程

Android,如何发送 HTML 电子邮件并强制 Android 通过 G-Mail 而不是其他应用程序发送它?

如何将图像插入电子邮件消息正文而不是作为附件? [复制]

PHP 发送带有 PDF 附件的电子邮件