0


0

Rebex.MailMessage Html文字列を操作する

現在、メッセージウォッチャーサービスに取り組んでおり、私のタスクはメッセージ本文にメッセージの詳細を埋め込むだけです。

私はこのために文字列ビルダーを使用しようとしましたが、私のメッセージ本文はHTMLベースの文字列であることがわかりました。

このhtml文字列の特定のポイントに追加したい値を追加できる方法があるかどうかを知りたいですか?

以下は、操作したいhtml文字列のセクションです。 本文はbodyタグの直後に挿入する必要があります。

       Another test for AppendLine();

ここに私がそれをやろうとしていた方法があります:

 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の値を1行に出力し、htmlセクションを出力しただけです。

さらに情報が必要な場合はお知らせください。提供させていただきます。

1 Answer


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(@"(]*>)", RegexOptions.IgnoreCase);
message.BodyHtml = regex.Replace(message.BodyHtml, "$1\r\n" + sb.ToString());

免責事項:*正規表現を使用したHTMLの処理はhttp://www.codinghorror.com/blog/2009/11/parsing-html-the-cthulhu-way.html[*一般に悪い考えと見なされている ]。 上記のコードは98%のケースで機能する可能性がありますが、正規表現は任意のHTMLを解析するタスクに対応していません。 HTMLは正規表現には洗練されすぎています。 (上記のものだけでなく)任意のHTMLボディを処理する必要がある場合は、http://htmlagilitypack.codeplex.com/ [HTML Agility Pack]などの適切なHTMLパーサーを使用することを強くお勧めします。 `body`タグの後にテキストを挿入します。