Я хотел бы выполнить следующую задачу: преобразование содержания TRichEdit (rtf текст) в тело электронного письма не-простого-текста.
MAPI не поддерживает rtf, но является там способом сделать это, возможно, с Инди?
Проблема состоит в том, что rtf является rtf, и электронные письма являются простым текстом или HTML.
Кто-то может предложить прием? Действительно ли возможно преобразовать rtf в текстовое использование TWebBrowser?
В основном сценарий:
1) Пользователь пишет электронное письмо в форме Дельфи,
2) Электронное письмо затем послано с MAPI почтовому клиенту по умолчанию (таким образом, новое почтовое окно сгенерировано, и тело сообщения является тем же, которое я имел в форме Дельфи),
3) Пользователь посылает электронное письмо от почтового клиента
Так или иначе MAPI принимает только простой текст.
ОБНОВЛЕНИЕ:
При попытке Инди, которую я записал этому, но тем не менее она не работает, поскольку я отправляю почту, которую она к моему Gmail считает, я получаю сообщение с пустым телом и вложение фальшивки NONAME.
uses IdMessageBuilder;
procedure SendMail;
var
MBuilder: TIdMessageBuilderRtf;
MyMemoryStream: TMemoryStream;
begin
try
MBuilder := TIdMessageBuilderRtf.Create;
MyMemoryStream := TMemoryStream.Create;
MBuilder.RtfType := idMsgBldrRtfRichtext;
// RichEdit1 has PlainText set to False
// at design time I pasted some formatted text onto it
RichEdit1.Lines.SaveToStream(MyMemoryStream);
MBuilder.Rtf.LoadFromStream(MyMemoryStream);
MBuilder.FillMessage(IdMessage1);
IdSMTP1.Connect;
IdSMTP1.Send(IdMessage1);
IdSMTP1.Disconnect;
finally
MyMemoryStream.Free;
MBuilder.Free;
end;
end;