2

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 に追加しようとすると、エラーが発生します。

助けとヒントをありがとう、そしてすべての読書について申し訳ありません。

4

1 に答える 1