LaB*_*cca 5 delphi mapi rtf sendmail indy
我想执行以下任务:将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;
Run Code Online (Sandbox Code Playgroud)
Indy支持发送RTF电子邮件.发送电子邮件的方式与发送HTML电子邮件的方式相同,只需使用"text/rtf","text/enriched"或"text/richtext"Context-Type,然后发送由TRichEdit生成的原始RTF代码.其PlainText属性设置为false.此外,如果您使用的是Indy 10,请查看其TIdMessageBuilderRtf类以正确设置TIdMessage结构.
| 归档时间: |
|
| 查看次数: |
3978 次 |
| 最近记录: |