在.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存档中提取内容,然后将添加到附件列表中。
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);
}