2011-02-10 99 views
2

発信Outlook.MailItemに文字列を追加しようとしています。送信イベントハンドラでは、私は持っています:CでOutlook.MailItemのRTFBodyを編集する

switch (mailItem.BodyFormat) { 
    case Outlook.OlBodyFormat.olFormatRichText: 
     byte[] mailItemBytes = mailItem.RTFBody as byte[]; 
     System.Text.Encoding encoding = new System.Text.ASCIIEncoding(); 
     string RTF = encoding.GetString(mailItemBytes); 
     RTF += "my string"; 
     byte[] moreMailItemBytes = encoding.GetBytes(RTF); 
     mailItem.RTFBody = moreMailItemBytes; 
     break; 
    // ... 
} 

しかし、受信した電子メールは私の文字列を含んでいません。

答えて

0

RTFはファイルのためのかなり精巧なフォーマットであり、文字列を連結するほど簡単ではありません。 コントロールを使用してデータを最初にインポートし、テキストを追加してから、フォーマットされた値を元に戻すことができます。 RTFファイルを解析するよりははるかに簡単ですが、はるかに簡単です。

代わりに、RTFを解析して動作するライブラリを見つけることができるかもしれませんが、それはアプリケーションに依存している可能性があります。

0

これは古いもので、緑のチェックが既にありますが、同様の問題を検索した後、Word.Documentオブジェクトモデルを使用してOutlookプロジェクトでRTFボディを修正する方法についての良い答えを与えるページが見つかりました。 https://www.add-in-express.com/forum/read.php?FID=5&TID=12738

基本的にはテキストをdocという単語で扱い、RTFを一緒に扱うことを忘れてしまいます。 Microsoft.Office.Interop.Wordの参照をプロジェクトに最初に追加する必要があります。

は、あなたのプロジェクトに使用して追加

using Word = Microsoft.Office.Interop.Word; 

は、あなたのコードを追加

Word.Document doc = Inspector.WordEditor as Word.Document; 

//text body 
string text = doc.Content.Text; 

//end of file 
int endOfFile = (text.Length) > 0 ? text.Length - 1 : 0; 

//Select the point to add or modify text 
Word.Range myRange = doc.Range(endOfFile, endOfFile); 

//add your text to end of file 
myRange.InsertAfter("my string"); 
関連する問題