C# с Outlook ... добавление подписи к электронному письму RTFBody вместо HTMLBody

У меня есть электронное письмо, созданное 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 и что-то объединяю с ним. Проблема в том, что исходный элемент не отображается, потому что он говорит, что вы не можете добавить byte []. Мне либо нужно переопределить оператор + для этого экземпляра, либо выяснить, как добавить к нему пустой байт arr ...

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

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

Когда вы говорите, что это не работает, вы получаете сообщение об ошибке или что-то еще происходит?

Martin 17.12.2018 23:02

Электронное письмо открывается, и все заполняется, но подпись не появляется.

MattE 17.12.2018 23:05

Можно ли посмотреть, что делает GetRTBText()?

Martin 17.12.2018 23:07

@MartinParkin Да, я разместил для него код ... в основном он просто кодирует данные из текстового поля Rich Text Box в байтовый массив и возвращает его.

MattE 17.12.2018 23:17

Возможно, это глупый вопрос, но вы устанавливаете формат почты в RTF? oMailItem.BodyFormat = olFormatRichText

Martin 17.12.2018 23:34

Я не ... Должен ли я быть? @MartinParkin Я добавил его, но без разницы.

MattE 17.12.2018 23:46
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
6
356
2

Ответы 2

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

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

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

Другие вопросы по теме