2010-04-06 41 views
85

我有一個byte[]與文件的內容。我想用System.Net.Mail作爲附件發送。如何從字節數組添加電子郵件附件?

我注意到附件類有1個過載接受一個流。

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

是否可以將byte[]通過此超載?

回答

160

最簡單的方法:

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

請注意,除非你做時髦的東西與異步操作,MemoryStream是安全離開未予處置,這可能使生活變得更容易。誠然,沒有保證這將是未來的事實,但我認爲它不太可能會改變。我看不到任何表示,其流:(

+1

謝謝喬恩,正是我需要的! – 2010-04-06 10:07:35

+2

好點,我注意到添加基於文件的附件時,我需要處置附件對象以釋放文件上的句柄。當然,這個流應該由GC來處理,因爲它不是IO操作? – 2010-04-06 10:14:47

+0

@JL:確實如此。 – 2010-04-06 12:48:52

30

是否附件的處置處置你需要使用適當的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