相关疑难解决方法(0)

Delphi:将rtf转换为文本的最佳方法

我需要将rtf转换为纯文本.我曾经写过一个剥去rtf标题的函数,但它永远不会完美.

因此,一个选项可以使用在运行时创建的TRichEdit(类似于此处描述的但当然在运行时完成).但还有另一种方式吗?这个或更好的方法是否有rtl功能?

更新:

这个问题中,我将rtf的最终版本写入了文本过程.

delphi rtf

6
推荐指数
1
解决办法
9142
查看次数

在delphi中发送包含rtf文本的电子邮件

我想执行以下任务:将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)

delphi mapi rtf sendmail indy

5
推荐指数
1
解决办法
3978
查看次数

标签 统计

delphi ×2

rtf ×2

indy ×1

mapi ×1

sendmail ×1