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


110

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

我注意到附件类有1个接受流的重载。

Attachment att = new Attachment(Stream contentStream,string name);

是否可以byte[]通过此重载?


顺便说一句,如果要设置附件的其他属性(例如,CreationDate),也可以使用att.ContentDisposition。
John Gilmer

Answers:


214

最简单的方法:

Attachment att = new Attachment(new MemoryStream(bytes), name);

请注意,除非您使用异步操作来处理一些时髦的事情,否则请MemoryStream放心,这会使您的生活更轻松。诚然,不能保证将来会发生这种情况,但是我认为这种情况不太可能改变。我看不到有关是否处置附件的任何指示:(


2
好一点,我在添加基于文件的附件时注意到,我需要处理附件对象以释放文件上的句柄。流肯定应该由GC处理,因为它不是IO操作?
JL。

FWIW,Mono的Attachment类Dispose在内容流上调用,并且从一个快速的测试用例中,.NET 4.0可以做到这一点。我不是很高兴这种情况,但是确实如此。
马特·恩赖特

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.