我有一个表示zip文件的MemoryStream。 这是流的创建方式:
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行,它将流保存到我的HDD(用于测试)。
保存在硬盘上的文件完美无瑕,如果zip中的文件为空,则重约138B。
但是,我在邮件中获得的附件权重为0B。
知道为什么附件重量为0B?
答案 0 :(得分:1)
是的,就像在大多数情况下一样,流的位置位于流的末尾。
尝试
try
{
zipMemoryStream.Position = 0;
mailMsg.Attachments.Add(new Attachment(zipMemoryStream, "ZipTest.zip",
MediaTypeNames.Application.Zip));
}