内存中的 Indy IdMessageBuilder 附件

Indy IdMessageBuilder attachments from memory

有没有一种方法可以从内存中添加相关附件而不是使用 Indy 的 MessageBuilder 保存在磁盘上的文件?

我正在为我的电子邮件添加页脚签名,并且图像在数据库中保存为 blob 字段。

我可以用 IdMessage 做到这一点,但 MessageBuilder 使一切变得如此简单。

我正在使用 Delphi XE7 和 Indy 10。

TIdMessageBuilderAttachment 有一个 public Data: TStream 属性,并且 TIdMessageBuilderAttachments 有一个重载的 Add() 方法和 AData: TStream参数.

如果 TStream 用于附件数据,构建器会创建一个 TIdAttachmentMemory 并将流数据复制到其中。否则,构建器会创建一个 TIdAttachmentFile 并将指定的文件名分配给它。

因此,您可以为您的 blob 数据获取 TStream,例如从 TDataSet.CreateBlobStream(),并从中创建电子邮件附件。