C# 编辑Outlook.MailItem';带C的s RTFBody#

C# 编辑Outlook.MailItem';带C的s RTFBody#,c#,outlook,rtf,C#,Outlook,Rtf,我正在尝试将字符串附加到传出Outlook.MailItem。在发送事件处理程序中,我有: switch (mailItem.BodyFormat) { case Outlook.OlBodyFormat.olFormatRichText: byte[] mailItemBytes = mailItem.RTFBody as byte[]; System.Text.Encoding encoding = new System.Text.ASCIIEncod

我正在尝试将字符串附加到传出Outlook.MailItem。在发送事件处理程序中,我有:

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;
    // ...
}
但是收到的电子邮件不包含我的字符串。

是一种非常复杂的文件格式,并不像连接字符串那样简单。您可以尝试使用该控件并首先在其中导入数据,向其中添加文本,然后重新获取格式化的值。有点笨重,但比解析RTF文件容易得多


或者,您可以找到一个解析RTF并使用RTF的库,但这意味着您的应用程序和版本中最有可能包含的另一个DLL之间存在依赖关系。

我知道这是一个旧版本,并且已经有了绿色复选框,但在搜索类似问题后,我发现了一个页面,该页面提供了如何使用Word.Document对象模型修改outlook项目中RTF正文的良好答案

基本上,您将文本视为word文档,而忘记了一起使用RTF。您需要先将Microsoft.Office.Interop.Word的引用添加到项目中

然后将using添加到项目中

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");