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));
}
ご覧のとおり、ストリームを HDD に保存する File.WriteAllBytes という行を追加しました (テスト用)。
HDD に保存されたファイルは完璧で、zip 内のファイルが空の場合、重量は約 138B です。
ただし、メールで受け取る添付ファイルの重量は 0B です。
アタッチメントの重さが 0B である理由が分かりますか?