Отправить письмо с текстом RTF в Delphi
Я хотел бы выполнить следующую задачу: преобразовать содержимое TRichEdit (текст RTF) в текстовое сообщение электронной почты, не содержащее текст.
MAPI не поддерживает RTF, но есть ли способ сделать это, возможно, с Инди?
Проблема в том, что 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;