gpt4 book ai didi

c# - 通过编码编辑 MailItem.RTFBody

转载 作者:太空宇宙 更新时间:2023-11-03 13:46:15 24 4
gpt4 key购买 nike

我使用 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 时,我得到了错误。

感谢您提供的任何帮助和提示,对所有阅读感到抱歉。

最佳答案

我遇到了同样的问题,并且遇到了我认为使用 Word.Document 对象模型替换 outlook rtf 正文中的文本的更简单方法。您需要先将 Microsoft.Office.Interop.Word 的引用添加到您的项目中。

然后添加使用

using Word = Microsoft.Office.Interop.Word;

那么你的代码看起来像

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

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

//find text location
int textLocation = text.IndexOf(replaceThis);

if(textLocation > -1){
//get range
int textLocationEnd = textLocation + replaceThis.Length;

//init range
Word.Range myRange = doc.Range(textLocation , textLocationEnd);

//replace text
myRange.Text = replaceWith
}

关于c# - 通过编码编辑 MailItem.RTFBody,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15232737/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com