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