从 .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);
}
在 .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);
}