如何从字节数组添加电子邮件附件?
问题描述:
我有一个byte[]
与文件的内容。我想用System.Net.Mail
作为附件发送。如何从字节数组添加电子邮件附件?
我注意到附件类有1个过载接受一个流。
Attachment att = new Attachment(Stream contentStream,string name);
是否可以将byte[]
通过此超载?
答
最简单的方法:
Attachment att = new Attachment(new MemoryStream(bytes), name);
请注意,除非你做时髦的东西与异步操作,MemoryStream
是安全离开未予处置,这可能使生活变得更容易。诚然,没有保证这将是未来的事实,但我认为它不太可能会改变。我看不到任何表示,其流:(
答
是否附件的处置处置你需要使用适当的MemoryStream constructor overload转换byte[]
为MemoryStream
。
Attachment att = new Attachment(new MemoryStream(myBytes), name);
注意,名参数为Attachment's constructor指定附件的内容类型的名称,而不是附件本身的名称
+2
看来,名称参数是文件的名称,而不是内容类型。请参阅备注:https://msdn.microsoft.com/en-us/library/system.net.mime.contenttype.name.aspx – 2017-05-24 05:44:04
谢谢乔恩,正是我需要的! – 2010-04-06 10:07:35
好点,我注意到添加基于文件的附件时,我需要处置附件对象以释放文件上的句柄。当然,这个流应该由GC来处理,因为它不是IO操作? – 2010-04-06 10:14:47
@JL:确实如此。 – 2010-04-06 12:48:52