从 .Zip 文件夹附加文件

Attaching a file from .Zip folder

.NET CORE 中使用 MailKit 可以使用以下方式加载附件:

bodyBuilder.Attachments.Add(FILE); 

我正在尝试使用以下方法从 ZIP 文件中附加一个文件:

using System.IO.Compression;    

string zipPath = @"./html-files.ZIP";
using (ZipArchive archive = ZipFile.OpenRead(zipPath))
{
     //   bodyBuilder.Attachments.Add("msg.html");
          bodyBuilder.Attachments.Add(archive.GetEntry("msg.html"));
}

但它没有用,并给了我 APP\"msg.html" not found,这意味着它正在尝试从 root 目录而不是 zipped 目录加载同名文件.

bodyBuilder.Attachments.Add() 没有采用 ZipArchiveEntry 的重载,因此使用 archive.GetEntry("msg.html") 没有成功的机会。

最有可能发生的事情是编译器将 ZipArchiveEntry 转换为恰好是 APP\"msg.html" 的字符串,这就是您收到该错误的原因。

您需要做的是从 zip 存档中提取内容,然后将 that 添加到附件列表中。

using System.IO;
using System.IO.Compression;

string zipPath = @"./html-files.ZIP";
using (ZipArchive archive = ZipFile.OpenRead (zipPath)) {
    ZipArchiveEntry entry = archive.GetEntry ("msg.html");
    var stream = new MemoryStream ();

    // extract the content from the zip archive entry
    using (var content = entry.Open ())
        content.CopyTo (stream);

    // rewind the stream
    stream.Position = 0;

    bodyBuilder.Attachments.Add ("msg.html", stream);
}