无法通过邮件发送拉链流

时间:2012-04-12 18:02:06

标签: email stream email-attachments

我有一个表示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?

1 个答案:

答案 0 :(得分:1)

是的,就像在大多数情况下一样,流的位置位于流的末尾。

尝试

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