【问题标题】:How do I store html page in a xml file?如何将 html 页面存储在 xml 文件中?
【发布时间】:2011-08-24 02:43:39
【问题描述】:

我有一个用 c# 编写的小应用程序作为控制台应用程序,我想用它来发送电子邮件。我计划将电子邮件连同邮件需要的其他信息(如主题)一起存储在 xml 文件中。但是似乎有一个问题,因为 XML 文件不喜欢 </br> 字符。

我想知道我应该怎么做才能存储 html 电子邮件,我是否只需将正文 html 保存在单独的 html 文件中,然后将每一行读入 StreamReader 对象?

【问题讨论】:

  • XML 不喜欢哪些字符?

标签: c# html xml email


【解决方案1】:

最简单的方法是将 HTML 内容存储在 CDATA section:

<mail>
  <subject>Test</subject>
  <body>
    <![CDATA[
      <html>
        ...
      </html>
     ]]>
  </body>
</mail>

【讨论】:

    【解决方案2】:

    您可以在 XML 中使用 CDATA 部分 - here 您可以阅读它。

    【讨论】:

      【解决方案3】:

      使用 CDATA 部分,该部分将包含您的电子邮件 HTML 代码:

      <?xml version="1.0"?>
      <myDocument>
        <email>
          <![CDATA[
              <html>
                <head><title>My title</title></head>
                <body><p>Hello world</p></body>
              </html>
          ]]>
        </email>
      </myDocument>
      

      【讨论】:

        【解决方案4】:

        您可以在 XML 中将 HTML 存储为 CDATA。

        但是看看你想要做什么,你可能希望看看 System.Web.UI.WebControls.MailDefinition 类,因为它已经包含了使用邮件模板的合理方式。

        msdn 文档倾向于在 WinForms 应用程序中使用它,但您可以简单地使用 ListDictionary 来填充替换。

        这是一个简单的示例,为了说明如何使用 MailDefinition,我不会详细介绍,因为它有点超出了原始问题的范围。

            protected MailMessage GetNewUserMailMessage(string email, string username, string password, string loginUrl)
            {
                MailDefinition mailDefinition = new MailDefinition();
        
                mailDefinition.BodyFileName = "~/mailtemplates/newuser.txt";
        
                ListDictionary replacements = new ListDictionary();
        
                replacements.Add("<%username%>", username);
                replacements.Add("<%password%>", password);
                replacements.Add("<%loginUrl%>", loginUrl);
        
        
                return mailDefinition.CreateMailMessage(email, replacements, this);
        
        
        
            }
        

        【讨论】:

        • 我认为这不是一个好主意。它不会将主体存储在对象中,而是存储在单独的文件中。
        • 嗨@Daniel Hilgarth 是的,这确实意味着将其保存在一个单独的文件中,但它确实是一个非常方便的实现。我会用一个例子来编辑我的答案。
        • 我看不到将正文的数据存储在单独的文件中有多方便。此外,这如何匹配 OP 关于将电子邮件的所有数据存储在一个 xml 文件中的问题?更多:它甚至支持 HTML 吗?
        • 它是一个有用的类,但我可能会坚持使用 1 个 xml 文件,我可以在其中放置所有内容。这在某些情况下会很好,谢谢!
        • @Pete2k ,不用担心,嗯,我想知道 MailDefiniation 是否可以扩展以存储在 xml 文件中....也许改天 :-)
        猜你喜欢
        • 1970-01-01
        • 2021-01-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-16
        • 1970-01-01
        • 2011-02-15
        • 2013-04-16
        相关资源
        最近更新 更多