C # с Outlook ... добавление подписи к электронной почте RTFBody вместо HTMLBody - PullRequest
0 голосов
/ 18 декабря 2018

У меня электронное письмо, сгенерированное C # с использованием Outlook Interop, но мне нужно использовать RTFBody, так как оно отформатировано в RTF, а не HTMLBody, где я вижу все примеры возможности добавления подписей там.

Я пытаюсь сделать что-то подобное, но это не работает для меня.Любой совет, чтобы заставить это работать в Outlook 2016?

MyOutlook.Mailitem oMailItem =(MyOutlook.MailItem)oApp.CreateItem(MyOutlook.olItemType.olMailItem);
oMailItem.Display(oMailItem); //create the empty mail item
oMailItem.To = emailform.ToMain;
oMailItem.CC = ccStrings;
oMailItem.BCC = emailForm.BCC;
oMailItem.Subject = emailForm.Subject;
oMailItem.RTFBody = GetRTBText(); //function to get RTF byte array

private byte[] GetRTBText() {
   Clipboard.Clear();
   RTBBody.SelectAll();
   RTBBody.Copy();
   return Encoding.UTF8.GetBytes(Clipboard.GetText(TextDataFormat.Rtf));

}

ОБНОВЛЕНИЕ:

Таким образом, похоже, что я могу получить подпись для отображения, когда я делаю трюк, аналогичный oMail.HTMLBody сomail.RTFBody и связать что-то с ним.Проблема в том, что оригинальный элемент не отображается, потому что он говорит, что вы не можете добавить байт [].Мне нужно либо переопределить оператор + для этого экземпляра, либо выяснить, как добавить к нему пустой байтовый массив ...

Поэтому я попытался объединить возвращаемый байтовый массив с пустым байтовым массивом.Выдает исключение из памяти.Я пытался объединить с самим элементом электронной почты oMailItem.RTFBody, та же проблема ...

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

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

Хорошо, я нашел обходной путь, чтобы сделать это, отображая электронную почту, чтобы была показана подпись, затем беря HTMLBody объекта mailItem и помещая его в экземпляр документа веб-браузера, а затем копируя и вставляя его в Rich TextBox, а затем кодирование текста расширенного текстового поля в байтовый массив в RTFBody.

Он работает для помещения в него правильной информации, но без надлежащих шрифтов и цветов.Если есть другой способ использовать настоящий HTMLBody, я бы хотел знать, как ...

0 голосов
/ 18 декабря 2018

Вы можете прочитать тело RTF в скрытый элемент управления RTF, загрузить данные файла подписи RTF, а затем вставить его в элемент управления RTF - для этого я использовал EM_EXSETSEL / EM_STREAMIN (SF_RTF | SFF_SELECTION) сообщения Windows API Windows.Вы можете затем передать полученный RTF.

...