从HTML内容中解析PlainText电子邮件(ASP.NET)

时间:2008-11-10 09:55:19

标签: asp.net html email parsing plaintext

是的,简而言之,我们基本上已经有一个系统,用于生成电子邮件的HTML内容。它并不完美,但它确实有效。

由此,我们需要能够为电子邮件派生明文替代方案。我正想着立即跳过并创建一个RegEx来从消息中删除<*>标签 - 但后来我意识到这不好,因为我们确实需要一些格式化信息(段落,换行符) ,图像等)。

注意:我可以实际发送邮件并设置其他视图等,但仅限于从HTML获取纯文本。

所以,我正在思考一些想法。发布一个作为答案,看看你们的想法,但我想我会把它打开。 :)

如果您需要进一步澄清,请大声说。

非常感谢,

罗布

3 个答案:

答案 0 :(得分:1)

我的解决方案

好的,所以在这里!我想到了解决问题的方法,它就像一个魅力!

现在,我想提出一些目标:

  • 电子邮件的所有内容都应保留在ASPX页面中(正如HTML内容当前所做的那样)。
  • 除了说“SendMail("PageX.aspx")”之外,我不希望客户端代码执行任何其他操作。
  • 我不想写太多代码。
  • 我希望尽可能保持代码语义正确(没有真的疯狂屁股黑客!)。

过程

所以,这就是我最终做的事情:

  • 转到电子邮件的母版页。创建一个ASP.NET MultiView Control。此控件将具有两个视图 - HTML和PlainText。
  • 在每个视图中,我添加了实际内容的内容占位符。
  • 然后我抓住了所有现有的ASPX代码(例如页眉和页脚)并将其粘贴在HTML视图中。所有这些,DocType和一切。这确实会导致VS发出一点声音。 忽略它。
  • 我当然在PlainText视图中添加了新内容,以便在PlainText环境中最好地复制HTML视图。
  • 然后我向Master Page_Load添加了一些代码,检查QueryString参数“type”,它可以是“html”或“text”。如果没有,它会落到“文本”上。根据值,切换视图。
  • 然后我转到内容页面并为PlainText等效项添加新占位符并根据需要添加文本。
  • 为了让我的生活更轻松,我随后重载了我的SendMail方法以获取所需网页的回复,传递“type=html”和“type=text”并创建{{3}酌情。

摘要

简而言之:

  • 视图分隔内容的实际“视图”(HTML和文本)。
  • 母版页自动根据QueryString切换视图。
  • 内容页面负责其观看次数。

完成工作!

如果其中任何一项不清楚,请大声说出来。我想在某个时候更详细地创建博客文章。

答案 1 :(得分:0)

我的想法

根据HTML内容创建页面并遍历控制树。然后,您可以从控件中选择文本并根据需要处理不同的控件(例如,对于图像使用ALT文本,对于HR等使用“_____”)。

答案 2 :(得分:0)

您可以确保HTML邮件采用XHTML格式,以便您可以使用标准XML工具轻松解析它,然后创建自己的DOM序列化程序,输出纯文本。覆盖一般的XHTML仍然需要做很多工作,但对于计划在电子邮件中使用的有限子集,它可以工作。

或者,如果您不介意炮轰另一个程序,可以使用-dump切换到lynx Web浏览器。