c# - 从 HTML 格式的电子邮件中解析文本

标签 c# html css asp.net html-parsing

我收到具有以下 html 格式的入站电子邮件(可能从办公室复制/粘贴并使用 outlook 发送)当我启用 HTML 的 UI 显示电子邮件内容时,这会导致格式问题。因此,为了解决它,我将 HTML 内容复制到在线 HTML 编辑器,或者我将它保存为 html 文件并在浏览器中运行它,这样我就可以复制文本来摆脱垃圾 html 和样式标签。我没有选择在我的标记中使用框架来抑制 HTML 和 CSS 并防止它影响页面样式。

每次我在入站电子邮件正文中检测到“urn:schemas-microsoft-com:vml”时,是否有任何其他方法可以务实地解决此问题并解析文本?

我还编写了一个删除标签的代码(例如 <head></head> 之间的任何内容),但我想看看是否有人可以提供更有效的处理方法或 Frames 的替代方法来在我的 UI 上抑制电子邮件正文内容中的错误 HTML

<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
	{font-family:Wingdings;
	panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
	{font-family:PMingLiU;
	panose-1:2 2 5 0 0 0 0 0 0 0;}
@font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
	{font-family:"\@PMingLiU";
	panose-1:2 2 5 0 0 0 0 0 0 0;}
@font-face
	{font-family:"Berlin Sans FB";
	panose-1:2 14 6 2 2 5 2 2 3 6;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0in;
	margin-bottom:.0001pt;
	font-size:12.0pt;
	font-family:"Times New Roman",serif;}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:#0563C1;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-priority:99;
	color:#954F72;
	text-decoration:underline;}
p
	{mso-style-priority:99;
	mso-margin-top-alt:auto;
	margin-right:0in;
	mso-margin-bottom-alt:auto;
	margin-left:0in;
	font-size:12.0pt;
	font-family:"Times New Roman",serif;}
span.EmailStyle18
	{mso-style-type:personal-reply;
	font-family:"Calibri",sans-serif;
	color:#1F497D;}
.MsoChpDefault
	{mso-style-type:export-only;
	font-family:"Calibri",sans-serif;}
@page WordSection1
	{size:8.5in 11.0in;
	margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D">See below.&nbsp; 
</span><span style="font-size:11.0pt;font-family:Wingdings;color:#1F497D">J</span><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#C45911">PLEASE NOTE THE FOLLOWING:
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#C45911">M<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#C45911"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#C45911">
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Berlin Sans FB&quot;,sans-serif;color:#1F497D"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Berlin Sans FB&quot;,sans-serif;color:#1F497D">Thank you!<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Berlin Sans FB&quot;,sans-serif;color:#1F497D"><o:p></o:p></span></p>

</div>
</div>
</body>
</html>

最佳答案

我最终使用了 Chilkat 的 HTMLToText 方法,它非常棒。

谢谢

关于c# - 从 HTML 格式的电子邮件中解析文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34663188/

相关文章:

javascript - iframe 不显示任何内容

jQuery - 动画 DIV 上的 Mouseout

css - 在没有脚手架的情况下 Bootstrap 响应行?

c# - 仅为特定路由或 Controller 需要 SSL 客户端证书

c# - 将列表制作成 ReadOnlyCollection 或 AsReadOnly 的优点

html - 在导航栏标题中调整 Logo 大小

javascript - 缩图预览,加载url到div

c# - MongoDB C# 驱动程序 - 忽略绑定(bind)字段

c# - 用于在 background-url 中查找 url 内值的正则表达式

html - 使用 CSS 垂直居中点