如何从字节数组添加电子邮件附件?

JL.*_*JL. 103 c#

我有一个byte[]文件的内容.我想发送它作为附件使用System.Net.Mail.

我注意到附件类有1个重载,它接受一个流.

Attachment att = new Attachment(Stream contentStream,string name);
Run Code Online (Sandbox Code Playgroud)

是否有可能byte[]通过这个过载?

Jon*_*eet 197

最简单的方法:

Attachment att = new Attachment(new MemoryStream(bytes), name);
Run Code Online (Sandbox Code Playgroud)

请注意,除非您使用异步操作执行时髦的操作,否则可以MemoryStream安全地保留不受限制的内容,这可能会让您的生活更轻松.诚然,不能保证将来会如此,但我认为它不太可能改变.我看不出任何关于处理附件是否处理其流的指示:(

  • 好的,我注意到在添加基于文件的附件时,我需要处理附件对象以释放文件上的句柄.当然,流应该由GC处理,因为它不是IO操作? (2认同)

Ode*_*ded 34

您需要使用适当的MemoryStream构造函数重载将其转换byte[]为a .MemoryStream

Attachment att = new Attachment(new MemoryStream(myBytes), name);
Run Code Online (Sandbox Code Playgroud)

请注意,Attachment的构造函数name参数指定附件的内容类型的名称,而不是附件本身的名称.

  • 似乎name参数是文件的名称,而不是内容类型.请参阅备注:https://msdn.microsoft.com/en-us/library/system.net.mime.contenttype.name.aspx (2认同)