Как мне сохранить HTML-страницу в XML-файле? - PullRequest
8 голосов
/ 12 мая 2011

У меня есть небольшое приложение, написанное на c # как консольное приложение, которое я хочу использовать для отправки электронной почты. Я планировал хранить электронную почту в XML-файле вместе с другой информацией, которая понадобится сообщению в качестве темы. Однако, похоже, проблема в том, что XML-файл не содержит символов </br>.

Мне интересно, что мне нужно сделать, чтобы хранить html-сообщение. Нужно ли просто сохранить html тела в отдельном html-файле, а затем прочитать каждую строку в объект StreamReader?

Ответы [ 4 ]

13 голосов
/ 12 мая 2011

Самый простой способ - хранить содержимое HTML в разделе CDATA :

<mail>
  <subject>Test</subject>
  <body>
    <![CDATA[
      <html>
        ...
      </html>
     ]]>
  </body>
</mail>
4 голосов
/ 12 мая 2011

Используйте раздел 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>
3 голосов
/ 12 мая 2011

Вы можете хранить HTML как CDATA в XML.

Но, глядя на то, что вы пытаетесь сделать, вы можете вместо этого взглянуть на класс 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);



    }
3 голосов
/ 12 мая 2011

Вы можете использовать раздел CDATA в своем XML - здесь вы можете прочитать об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...