2011-07-08 5 views
0

私は現在、私たちが持っているメッセージウォッチャーサービスに取り組んでいます。メッセージの詳細をメッセージ本文に単純に埋め込むことです。Rebex.MailMessageを操作します。Html String

これは文字列ビルダーを使用してみましたが、メッセージ本体が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); 

は、残念ながら、これだけの私の1行に、件名の値、に送られた後、出力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がgenerally regarded as a bad ideaあるご了承ください。上のコードは98%のケースで機能するかもしれませんが、正規表現は任意のHTMLを解析するタスクには適していません。 HTMLは正規表現にとっては洗練されていません。任意のHTMLボディ(上記のものだけでなく)を処理する必要がある場合は、HTML Agility Packなどの適切なHTMLパーサを使用することを強くお勧めします。bodyタグの後にテキストを挿入するなどの操作は簡単です。

関連する問題