通过电子邮件发送StringList作为附件 - Indy

5 delphi indy10 delphi-xe2

如何通过电子邮件附件发送整个StringList而不保存到硬盘?我知道附件限制..

mar*_*usl 5

您可以使用TIdAttachmentMemory而不是TIdAttachmentFile:

StringList := TStringList.Create;
StringList.Append('foo');
StringList.Append('bar');

MemoryStream := TMemoryStream.Create;
StringList.SaveToStream(MemoryStream);
MemoryStream.Position := 0;

IdMessage := TIdMessage.Create(nil);
IdAttachmentMemory := TIdAttachmentMemory.Create(IdMessage.MessageParts,MemoryStream);
Run Code Online (Sandbox Code Playgroud)

  • 您可以构造`TIdAttachmentMemory`而不使用任何`CopyFrom`参数值,然后使用其`OpenLoadStream()`方法来获取可以传递给`SaveToStream()`的`TStream`,而不是使用单独的`TMemoryStream`.或者,您可以将`StringList.Text`传递给`TIdAttachmentMemory`构造函数. (4认同)