我想执行以下任务:将 TRichEdit 内容(rtf 文本)转换为非纯文本电子邮件正文。
MAPI 不支持 rtf,但有没有办法用 Indy 做到这一点?
问题是 rtf 是 rtf 而电子邮件是纯文本或 HTML。
有人可以建议一个技巧吗?是否可以使用 TWebBrowser 将 rtf 转换为文本?
基本上情况是:
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;