C# MailKit:将HTML邮件作为纯文本接收

3

我有一个复杂的电子邮件模板,包含许多divsection和其他HTML元素。HTML模板引用了CSS(上传到服务器)。我正在使用以下代码通过MailKit发送HTML电子邮件:

var message = new MimeMessage();
var bodyBuilder = new BodyBuilder();
bodyBuilder.HtmlBody = File.ReadAllText(pathToHtmlFIle);
message.Body = bodyBuilder.ToMessageBody();

client.Send(message);

但是客户端只会以纯文本形式接收所有内容,没有颜色,没有格式。这是预期的结果吗?

回答你的问题,我不认为这是预期的结果。然而,虽然对MailKit不太熟悉,但有一些Stack Overflow的答案(比如这个)可能会有所帮助。 - Frank Alvaro
@ffa,我很久之前就查看了这篇帖子。它没有帮到我。 - Software Dev
一些额外的信息可以提供更多线索,以确定可能出错的原因,例如发送的消息的原始 MIME(您可以使用 message.WriteTo("file.txt") 进行操作),如果可能的话,还可以提供客户端接收到的原始消息(大多数邮件客户端允许将消息保存到文件中)。也许在接收客户端中展示消息的截图也会很有用。 - jstedfast
2个回答

6

我认为你需要使用内联CSS或在head部分嵌入CSS。由于大多数网络邮件客户端会阻止链接到外部样式表,因此很少在电子邮件中使用这种方法。


1
请访问https://github.com/milkshakesoftware/PreMailer.Net了解如何将CSS内联化。 - David De Sloovere

0

在经历了很多困难后,我最终发现错误是 HTML 内部的双引号 ... 使用记事本++(通过 Ctrl+f 快速启动)将所有 " 替换为 '。真是一个神奇的解决方法,只收到纯文本后,我终于收到了 text/html。

附注:不要使用 bootstrap 或尝试链接外部来源,因为邮件客户端会阻止外部 CSS 提供者。严格使用所有标签的样式属性。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接