Манипулировать строкой Rebex.MailMessage Html - PullRequest
0 голосов
/ 08 июля 2011

В настоящее время я работаю над службой наблюдения за сообщениями, которая у нас есть, и моя задача состоит в том, чтобы просто встроить детали сообщения в тело сообщения.

Я попытался использовать для этого конструктор строк, однако обнаружил, что мое тело сообщения - это строка на основе html.

Я хочу знать, есть ли способ добавить значения, которые я хочу добавить, в определенный момент в этой HTML-строке?

Ниже приведен раздел строки html, которым я хочу манипулировать. Мой текст необходимо вставить сразу после тега body.

 <body lang=EN-GB link=blue vlink=purple>
   <div class=WordSection1>
     <p class=MsoNormal>
       <span style='font-size:10.0pt;font-family:"Century Gothic","sans-serif";color:black'>Another test for AppendLine();<o:p></o:p>
       </span>
     </p>

Вот как я пытался это сделать:

 StringBuilder sb = new StringBuilder();

            sb.Append("From: ");
            sb.Append(message.From.ToString());
            sb.AppendLine();
            sb.Append("Sent: ");
            sb.Append(message.Date.ToString());
            sb.AppendLine();
            sb.Append("To: ");
            sb.Append(message.To.ToString());
            sb.AppendLine();
            sb.Append("Subject: ");
            sb.Append(message.Subject);
            sb.AppendLine();
            sb.Append(message.BodyHtml);

К сожалению, это просто напечатало мои значения From, Sent, To, Subject в одну строку, а затем вывел раздел html.

Если вам нужна дополнительная информация, пожалуйста, дайте мне знать, и я предоставлю ее.

1 Ответ

1 голос
/ 08 июля 2011

Вместо добавления основного HTML, попробуйте это регулярное выражение заменить:

StringBuilder sb = new StringBuilder();

sb.Append("From: ");
sb.Append(message.From.ToString());
...
sb.Append("Subject: ");
sb.Append(message.Subject);
sb.AppendLine();

// not guaranteed to work with arbitrary HTML strings
Regex regex = new Regex(@"(<body[^>]*>)", RegexOptions.IgnoreCase);
message.BodyHtml = regex.Replace(message.BodyHtml, "$1\r\n" + sb.ToString());

Отказ от ответственности: Обратите внимание, что обработка HTML с регулярными выражениями обычно считаетсякак плохая идея .Хотя приведенный выше код может работать в 98% случаев, регулярные выражения не подходят для анализа произвольного HTML.HTML слишком сложен для регулярных выражений.Если вам нужно обрабатывать произвольные HTML-тела (не только те, что указаны выше), я настоятельно рекомендую использовать правильный HTML-анализатор, такой как HTML Agility Pack - даже для, казалось бы, простых операций, таких как вставка текста после body тег.

...