Dot-Net
作為 System.Net.Mail 的附件的流是 0 字節
我有一個項目,我正在使用 PDF 生成器向使用者發送文件。我們想讓使用者選擇將此文件附加到電子郵件中,但我們在同時使用 Stream 對象和附件邏輯時遇到了問題。
我們從 ABCpdf 開始,它有兩種保存方法:它可以保存到 Stream,或者如果你給它一個字元串,它會嘗試保存到磁碟上的文件。我們都做了沒有問題。
Stream stream = new MemoryStream(); myPdf.Save(stream);此時一切都很酷 -
stream有幾千字節的數據,如果你 .Save() 到一個文件,你會得到一個具有相同字節數的實際文件。所以我們此時附加到一封電子郵件(在初始化郵件對象、設置 To: 和 From: 等之後):
mail.Attachments.Add(new Attachment(stream, "myPdf.pdf")); mail.Send();…這讓我們收到一封 0 字節的電子郵件,但文件名正確。
我在網上找到的所有範例都使用 StreamReader 或 StreamWriter 或 Flush() 或其他東西。它似乎總是比簡單地傳遞 Stream 更複雜,但可能只有一兩行更複雜。這些範例都不是以 Stream 開頭的 - 他們總是試圖將數組轉換為 Stream 以向您展示這是多麼容易,或者從磁碟中獲取文件(我們不能這樣做,這就是我們興奮的原因使用流)。
無論如何,如果有人能解釋我做錯了什麼或我應該做什麼,我將不勝感激。謝謝。
一個猜測……在發送 nit 之前將數據流返回到開頭
// Set the position to the beginning of the stream. stream.Seek(0, SeekOrigin.Begin); mail.Attachments.Add(new Attachment(stream, "myPdf.pdf")); mail.Send();