2012-04-12 49 views
0

我有一個MemoryStream代表一個zip文件。 這是流是如何創建的:無法通過郵件發送郵件流

var zipMemoryStream = new MemoryStream(); 
using (var zipPackage = Package.Open(zipMemoryStream, FileMode.CreateNew)) 
{ 
    foreach (var file in files) 
    { 
     var c = new Uri("/" + file.FileName + extension, UriKind.Relative); 
     var zipPart = zipPackage.CreatePart(c, fileType); 

     if (zipPart == null) 
      continue; 

     CopyStream(file.MemoryStream, zipPart.GetStream()); 
    } 
} 

File.WriteAllBytes("C:\\ZipTest.zip", zipMemoryStream.ToArray()); 

try 
{ 
    mailMsg.Attachments.Add(new Attachment(zipMemoryStream, "ZipTest.zip", 
          MediaTypeNames.Application.Zip)); 
} 

正如你可以看到我已經添加了行File.WriteAllBytes該流保存到我的硬盤驅動器(用於測試)。

保存在硬盤上的文件是完美無缺的,如果zip中的文件爲空,則權重約爲138B。

但是,我在郵件中獲得的附件權重爲0B。

任何想法爲什麼附件重量爲0B?

回答

1

是的,像這樣的大多數情況下,流的位置是在流的末尾。

嘗試

try 
{ 
    zipMemoryStream.Position = 0; 
    mailMsg.Attachments.Add(new Attachment(zipMemoryStream, "ZipTest.zip", 
          MediaTypeNames.Application.Zip)); 
}