【问题标题】:XML / HTML Email Template for Error Reporting用于错误报告的 XML / HTML 电子邮件模板
【发布时间】:2012-08-27 20:17:00
【问题描述】:

我想创建一个带有占位符的 XML 或 HTML 模板,以便在发生异常时在运行时交换异常报告变量。我喜欢我目前所拥有的模板和行为,但目前它们都是硬编码的,太糟糕了。

这是我的代码示例...

'Styling (Outlook does not follow CSS standards >:-( )
body = "<html><head>" & _
        "<style type=""text/css"">" & _
        "   * {font:12px Arial, Helvetica, sans-serif;}" & _
        "   table {border-collapse:collapse;}" & _
        "   table.grid td {padding:0 7px;border:solid #ccc 1px;}" & _
        "   .bold {font-weight:bold;padding-right:12px;}" & _
        "</style></head><body>"

'Partial template
body &= "<table><tr><td class=""bold"">Error:</td><td>" & ex.Message & "</td></tr>" & _
        "<tr><td class=""bold"">Exception:</td><td>" & ex.GetType().FullName & "</td></tr>" & _
        "<tr><td class=""bold"">Source:</td><td>" & ex.Source & "</td></tr>" & _
        "<tr><td class=""bold"">Request Url:</td><td>" & Request.Url.ToString & "</td></tr></table><br />"

注意ex.Message 变量等。我想将所有 HTML 代码与每个错误变量的占位符一起移动到一个单独的文件中(XML 或 HTML,取决于推荐的内容,我想是 XML?)。然后加载模板,替换变量并即时发送电子邮件。这样做的最佳做法是什么?

另外,请不要尝试修复我的 CSS,这不是这个问题的目的。 Outlook 不遵循标准(看图),这就是我必须这样做的方式。

谢谢。 ;)

【问题讨论】:

    标签: html xml vb.net templates


    【解决方案1】:

    我认为您的方法非常正确。步骤是:

    • 将模板提取到资源文件中(资源扩展名为 .xml,.html 是实际的资源类型)。
    • 用标记替换变量连接;所以会是: (...)&lt;tr&gt;&lt;td class="bold"&gt;Source:&lt;/td&gt;&lt;td&gt;{exSource}&lt;/td&gt;&lt;/tr&gt;(...)
    • 为 String 对象创建一个扩展方法以“增强”String.Format,因此您可以执行类似的操作

      ' Load the resourceFile and put content into formattedBody
      Dim formattedBody as String = templateBody.FormatWith(New With{.exSource = ex.Source})
      

    关于如何实现FormatWith,请看here。 这个answer 也可以帮助你。

    【讨论】:

    • 那么使用 XML 模板实现这一点有多容易?我几乎没有使用 XML 的经验。还是更喜欢 XML?我是否应该只使用 HTML,因为这最终需要格式化,以便 Outlook 无论如何都能读取它?谢谢。
    • 您不必使用 XML 对象。模板将是您自己创建的文本文件(.html、.xml 或 .txt 扩展名在这里没有任何区别)。只需阅读文本文件(您的模板),并将您的标记替换为您在代码中拥有的相应变量。
    • 太棒了!做了一些事情,但工作起来就像一个魅力。谢谢你。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-28
    • 1970-01-01
    相关资源
    最近更新 更多