Я хотел бы выполнить следующую задачу: преобразовать содержимое TRichEdit (текст в формате rtf) в тело сообщения электронной почты, не являющееся обычным текстом.
MAPI не поддерживает rtf, но есть ли способ сделать это с помощью Indy?
Проблема в том, что rtf — это rtf, а электронные письма — это обычный текст или HTML.
Может кто подскажет трюк? Можно ли преобразовать rtf в текст с помощью TWebBrowser?
В основном сценарий следующий:
1) Пользователь пишет электронное письмо в форме delphi,
2) Затем электронное письмо отправляется с помощью MAPI почтовому клиенту по умолчанию (поэтому создается новое окно электронной почты, а тело сообщения является то же самое у меня было в форме delphi)
3) Пользователь отправляет письмо из почтового клиента
В любом случае MAPI принимает только обычный текст.
ОБНОВИТЬ:
Пытаясь с Indy, я написал это, но все равно это не работает, поскольку я отправляю письмо на свою учетную запись 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;