如何将html页面存储在xml文件中?

时间:2011-05-12 12:57:47

标签: c# html xml email

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

我想知道为了存储html电子邮件我应该做些什么我只需要在单独的html文件中使用html,然后将每行读入StreamReader对象?

4 个答案:

答案 0 :(得分:13)

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

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

答案 1 :(得分:4)

使用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>

答案 2 :(得分:3)

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

答案 3 :(得分:3)

您可以将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);



    }