1

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

由此,我们需要能够导出电子邮件的明文替代方案。我正在考虑立即开始并创建一个正则表达式以<*>从消息中删除标签 - 但后来我意识到这并不好,因为我们确实需要一些格式信息(段落、换行符、图像等)。

注意:我可以实际发送邮件和设置替代视图等,这只是从 HTML 获取纯文本。

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

如果您需要更多说明,请大声喊叫。

非常感谢,

4

3 回答 3

1

我的解决方案

好的,就是这样!我想出了一个解决我的问题的方法,它就像一个魅力!

现在,这里有一些我想设定的目标:

  • 电子邮件的所有内容都应保留在 ASPX 页面中(就像当前的 HTML 内容一样)。
  • 除了说“”之外,我不希望客户端代码做任何事情SendMail("PageX.aspx")
  • 我不想写太多代码。
  • 我想让代码在语义上尽可能正确(没有真正疯狂的黑客攻击!)。

过程

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

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

总之

所以,简而言之:

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

任务完成!

如果其中任何一个不清楚,请大声疾呼。我想在某个时候更详细地创建关于此的博客文章。

于 2008-11-10T13:24:18.600 回答
0

我的点子

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

于 2008-11-10T09:56:38.037 回答
0

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

或者,如果您不介意使用其他程序,您可以使用 -dump 开关切换到 lynx Web 浏览器。

于 2008-11-10T10:49:08.960 回答