c# - 电子邮件附件作为文件而不是 zip 文件发送
问题描述
因此,我正在尝试将 pdf 的 zip 文件附加到电子邮件中,它以文件而不是 zip 的形式出现。我可以在记事本中打开它,但它只是一堆随机字符。
这是我发送电子邮件的方法:
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;
Attachment myZip = new Attachment(output, "Client Statement");
mail.Attachments.Add(myZip);
SmtpServer.Send(mail);
}
catch (Exception ex)
{
FMBUtilities.Logger.LogErrorToSql2012PrdAndEmailTeam("DBQueries", "SendEmail", ex);
}
}
我在这里从我的控制器调用它:
// 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." });
}
MemoryStream output = new MemoryStream();
List<string> distinctFiles = allPaths
.GroupBy(x => x.Split(new char[] { '\\' }).Last())
.Select(x => x.First())
.ToList();
using (ZipFile zip = new ZipFile())
{
zip.AddFiles(distinctFiles, @"\");
zip.Save(output);
output.Position = 0;
DBQueries.SendEmail(everyEmail, output, fromAddress, "Client Statement Reports", "Here are your requested Client Statements", true);
}
我有另一种用于下载 zip 文件的控制器方法,因此我知道它正在正确下载并且一切正常。我似乎无法弄清楚如何将此 zip 附加到电子邮件中。
编辑:
这是来自附件的文件的图像。[![在此处输入图像描述][1]][1]
解决方案
该文件以“PK”开头 - 它是一个 zip,但是因为您是从内存流中制作的并且似乎没有指定文件名,所以它只会像默认名称一样通过
查看ContentDisposition
附件的FileName
属性及其上的属性,例如
myZip.ContentDisposition.FileName = "myFile.zip";
推荐阅读
- sql - 在 oracle. 中,替换或引用 reg_exp 中特殊字符的语法是什么,例如 $ 或 @ 或 & 或 |
- sql - 什么是 SQL 中与日期一起使用的“级别”?
- groovy - 在自定义类中使用时出现 Swtbot.syncExec() 问题
- javascript - Reactjs - 未捕获的类型错误:无法读取未定义的属性“then”
- datetime - 默认日期分配失败
- java - 如果另一个应用程序在存储(DB)处更改了数据,如何触发应用程序更新缓存?
- php - 在 Laravel 5.7 上添加日期时间
- python - python regexp 方法返回一个包含空元素的列表
- iis - 智能卡身份验证停止在 IIS 7.5 上工作 - 每个人都得到 401
- c++ - “if else”是否被视为单个语句?