gpt4 book ai didi

delphi - 在delphi中发送带有rtf文本的电子邮件

转载 作者:行者123 更新时间:2023-12-03 15:07:59 28 4
gpt4 key购买 nike

我想执行以下任务:将 TRichEdit 内容(rtf 文本)转换为非纯文本电子邮件正文。

MAPI 不支持 rtf,但是有没有办法用 Indy 来实现?

问题是 rtf 是 rtf,而电子邮件是纯文本或 HTML。

有人可以建议一个技巧吗?是否可以使用 TWebBrowser 将 rtf 转换为文本?

基本上情况是:
1)用户以delphi形式编写电子邮件,
2)然后电子邮件使用MAPI发送到默认邮件客户端(因此生成一个新的电子邮件窗口,并且消息正文与我在delphi形式中的相同)
3)用户从邮件客户端发送电子邮件

无论如何,MAPI 只接受纯文本。

更新:

尝试使用 Indy 我写了这个,但它仍然不起作用,当我将其发送到我的 gmail 帐户时,我收到了一条内容为空且没有名称假附件的消息。

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;

最佳答案

Indy 支持发送 RTF 电子邮件。发送电子邮件的方式与发送 HTML 电子邮件相同,只需使用“text/rtf”、“text/enriched”或“text/richtext”上下文类型,然后发送由 TRichEdit 生成的原始 RTF 代码其 PlainText 属性设置为 false。另外,如果您使用的是 Indy 10,请查看其 TIdMessageBuilderRtf 类以正确设置 TIdMessage 结构。

关于delphi - 在delphi中发送带有rtf文本的电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3309242/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com