我需要处理传入电子邮件的正文。它们可以是纯文本、HTML 和 RichText 格式。我需要对正文执行文本匹配算法,但 HTML 和 RichText 标记会使它们混淆。有没有办法获取纯文本数据?
我正在寻找一种可以自动解析这两种格式的方法(比如当我在 Total Commander 中按 F3 时,它将在 HTML 和 RTF 文件中显示文本)。
商业解决方案也是一种选择。
提前致谢。
我需要处理传入电子邮件的正文。它们可以是纯文本、HTML 和 RichText 格式。我需要对正文执行文本匹配算法,但 HTML 和 RichText 标记会使它们混淆。有没有办法获取纯文本数据?
我正在寻找一种可以自动解析这两种格式的方法(比如当我在 Total Commander 中按 F3 时,它将在 HTML 和 RTF 文件中显示文本)。
商业解决方案也是一种选择。
提前致谢。
对于 html,我会使用HtmlAgilityPack。例如,
HtmlAgilityPack.HtmlDocument document = new HtmlAgilityPack.HtmlDocument();
document.LoadHtml(html);
foreach(var node in document.DocumentNode.Descendants("script").ToList())
{
node.Remove();
}
var text = document.DocumentNode.InnerText;
对于 rtf,我会将其加载到 RichTextBox 并另存为文本。
免责声明:我是这些库的开发者
是的,HTML 可能包含 Unicode 符号,例如“&#XXX;” 或“”。此外,例如,如果 HTML 有一个包含 3 列和 2 行的表格,最好将此结果视为表格文本:
1 2 34 5 6
而不是“1 2 3 4 5 6”。
这些.Net 库可以帮助您将 HTML 和 RTF 转换为 Text。
示例 #1 - 将 HTML 转换为 Unicode 文本:
SautinSoft.HtmlToRtf h = new SautinSoft.HtmlToRtf();
h.OutputFormat=SautinSoft.HtmlToRtf.eOutputFormat.TextUnicode;
string text = h.ConvertString(htmlString);
示例 #2 - 将 RTF 转换为 Unicode 文本:
SautinSoft.RtfToHtml r = new SautinSoft.RtfToHtml();
r.OutputFormat = SautinSoft.RtfToHtml.eOutputFormat.Text;
string text = r.ConvertString(rtfString);