c# - 使用 dotnetzip 库附加到电子邮件后无法打开 Zip 文件
问题描述
我能够将所有文件保存到一个 zip 文件中并正确下载它们。现在我需要使用该 zip 文件附加到电子邮件。我收到错误说它无法打开,如果我在记事本中打开它,它们是空白的。它们是pdf。
这是我下载它们的方式:
else if (radio[0] == "Email Statements")
{
// Make array of emails into List for sending in email
if (emails.ToString() != "")
{
var allEmails = emails[0].Split(',');
foreach (var email in allEmails)
{
if (emailValid.IsMatch(email))
{
everyEmail.Add(email);
}
else
{
return Json(new { success = false, message = $"* Not valid email address: {email}.\n\n * Please double check and try again." });
}
List<string> distinctFiles = allPaths
.GroupBy(x => x.Split(new char[] { '\\' }).Last())
.Select(x => x.First())
.ToList();
using (ZipFile zip = new ZipFile())
{
zip.AddFiles(distinctFiles, @"\");
MemoryStream output = new MemoryStream();
output.Position = 0;
zip.Save(output);
DBQueries.SendEmail(everyEmail, output, fromAddress, "Client Statement Reports", "Here are your requested Client Statements", true);
所以这个DBQueries.SendEmail
函数会把我带到这个:
public static void SendEmail(List<string> recipients, MemoryStream output, string from, string subject, string htmlMessage, bool isHtml = true)
{
var host = ConfigurationManager.AppSettings["emailHost"];
try
{
MailMessage mail = new MailMessage();
mail.From = new MailAddress(from);
foreach (var r in recipients)
{
mail.To.Add(r);
}
mail.Subject = subject;
mail.IsBodyHtml = isHtml;
mail.Body = htmlMessage;
//string result = System.Text.Encoding.UTF8.GetString(output.ToArray());
SmtpClient SmtpServer = new SmtpClient(host);
SmtpServer.Port = 25;
mail.Attachments.Add(new Attachment(output, "Client Statments"));
SmtpServer.Send(mail);
}
catch (Exception ex)
{
FMBUtilities.Logger.LogErrorToSql2012Prd("DBQueries", "SendEmail", ex);
}
}
在此之后我无法阅读附件。我需要做什么才能使其可读?
解决方案
请在附件中使用正确的格式。你可以试试 mail.Attachments.Add(new Attachment(output, "Client Statments.zip"));
推荐阅读
- java - 占用几行文字并分析
- unity3d - 没有可供购买的产品 - 应用内购买
- scala - 您可以在 ScalaTest 中多次运行测试套件吗?
- python - 通过列中的子字符串屏蔽数据帧
- python - 将 C ioctl/mmap 调用转换为 Python 时出错?
- intellij-idea - 如何在 IntelliJ Idea 中为打字稿更改黄瓜的“生成步骤定义”模板
- postgresql - 更新 PostgreSql 数据库中的时间戳列
- mocking - Stencil e2e 测试:在 puppeteer 浏览器上下文中模拟一个函数
- python - Gerrit Code Review - 从更改中检索文件名
- css - 逐渐增加列之间的空间