我已经使用 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[]
删除后的大小几乎翻了一番。当我在删除期间检查它时,它大约为 15k 字节,而当我在添加期间检查时,它跳到超过 30k 字节。当我尝试将新膨胀的内容添加byte[]
到 rtfBody 时,我得到了错误。
感谢您提供任何帮助和提示,并对所有阅读内容感到抱歉。