Редактирование RTFBody в Outlook.MailItem с помощью C # - PullRequest
2 голосов
/ 11 февраля 2011

Я пытаюсь добавить строку в исходящий 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;
    // ...
}

но полученное письмо не содержит мою строку.

Ответы [ 2 ]

0 голосов
/ 15 апреля 2017

Я знаю, что он старый и уже имеет зеленый флажок, но после поиска похожих проблем я нашел страницу, которая дает хороший ответ о том, как изменить тело RTF в проекте outlook с использованием объектной модели Word.Document. https://www.add -in-express.com / форум / read.php? FID = 5 & TID = 12738

По сути, вы рассматриваете текст как слово doc и забываете о совместной работе с RTF. Сначала вам нужно будет добавить ссылку на Microsoft.Office.Interop.Word в ваш проект.

затем добавьте использование в свой проект

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");
0 голосов
/ 11 февраля 2011

RTF - довольно сложный формат для файлов, и он не будет таким простым, как конкатенация строки. Вы можете попробовать использовать элемент управления RichTextBox и сначала импортировать туда данные, добавить в них текст, а затем снова получить отформатированное значение. Немного неуклюже, но намного проще, чем анализ файла RTF.

В качестве альтернативы вы можете найти библиотеку, которая анализирует и работает с RTF, но это означает зависимость для вашего приложения и, скорее всего, еще одну DLL для включения в выпуск.

...