UTF8Encoding を使用して MailItem から RTFbody をエンコードすることに成功しました。新しい電子メールを作成し、すべての新しい電子メールの操作を実行して、[送信] をクリックすることができます。送信を押すと、カテゴリにも追加されるタグをメールに追加します。これはすべて RTFBbody を通じて機能します。
問題は、RTF メールに返信するときに発生します。これは、テスト目的で、孤独な自分に送信したメールにすぎません。返信メールを送信して新しいタグが追加された場合は、まず古いタグを削除してから新しいタグを追加します。新しいタグを含む編集済みの文字列を返信メールに設定するRTFBody
と、「メモリまたはディスク容量が不足しています」というエラーが表示されます。これは、同じ機能を持つタグを削除しただけでは発生しません。
以下は私が使用しているコードです:
private void ChangeRTFBody(string replaceThis, string replaceWith)
{
byte[] rtfBytes = Globals.ThisAddIn.email.RTFBody as byte[];
System.Text.Encoding encoding = new System.Text.UTF8Encoding();
string rtfString = encoding.GetString(rtfBytes);
rtfString = rtfString.Replace(replaceThis, replaceWith);
rtfBytes = encoding.GetBytes(rtfString);
Globals.ThisAddIn.email.RTFBody = rtfBytes; < // The error is here only on
// reply and only when I replace
// with new tags
}
これらは私が行う呼び出しです:
古いタグを削除:ChangeRTFBody(lastTag, "");
新しいタグを追加:ChangeRTFBody("}}\0", newTag + "}}\0");
私が言ったように、これは新しいメールを作成して送信すると機能しますが、同じメールに返信しようとすると機能しません。またbyte[]
、削除後のサイズはほぼ倍増しているようです。Delete 中に確認すると約 15k バイトで、Add 中に確認すると 30k バイト以上にジャンプします。新しく膨らんだbyte[]
ものを rtfBody に追加しようとすると、エラーが発生します。
助けとヒントをありがとう、そしてすべての読書について申し訳ありません。