Манипулировать строкой Rebex.MailMessage Html
В настоящее время я работаю над службой наблюдения за сообщениями, которая у нас есть, и моя задача состоит в том, чтобы просто вставить детали сообщения в тело сообщения.
Я попытался использовать построитель строк для этого, однако я обнаружил, что мое тело сообщения является строкой на основе 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 ответ
Вместо добавления основного 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
тег.