如果将通过电子邮件发送HTML,则还必须附加替代纯文本。 (至少某些垃圾邮件检测软件将检查是否存在纯文本替代品)如何将HTML转换为纯文本?
HtmlDocument document = new HtmlDocument();
document.Load(htmlBody);
string plainBody = document.DocumentNode.InnerText;
将返回纯文本,但是所有链接将丢失。
例如:
HTML版本
<a href="#">Hello World</a>
应该导致
Hello World (#)
但这会导致
Hello World
答案 0 :(得分:2)
据我所知,innertext将获取对象的开始和结束标签之间的文本,而不会获取属性值。
如果要获取属性值,则应自己完成。您可以选择所有标签的href属性值,然后替换内部文本。
更多详细信息,您可以参考以下代码:
我使用了HtmlAgilityPack软件包,您可以使用Nugetpackage来安装它:https://www.nuget.org/packages/HtmlAgilityPack/
var doc = new HtmlDocument();
doc.LoadHtml(@"<html><body><div id='foo'>text<a href='#'>Hello World</a> <a href='#'>test</a></div></body></html>");
var innertext = doc.DocumentNode.InnerText;
var nodes = doc.DocumentNode.SelectNodes("//a");
foreach (var item in nodes)
{
var herf = ((HtmlAttribute)item.Attributes.Where(x => x.Name == "href").FirstOrDefault()).Value;
innertext = innertext.Replace(item.InnerText, item.InnerText + string.Format("({0})", herf));
}
结果: