【发布时间】:2016-10-10 13:06:16
【问题描述】:
当使用 System.Net.Mail 命名空间向任何 Yahoo 帐户发送带有附件的电子邮件时,附件会以“无标题”名称而不是文件名下载。
在 Yahoo Mail 界面中,附件看起来具有正确的名称,但是当您下载它时,所有附件的下载名称都变为“无标题”。相同的电子邮件消息适用于 Gmail、Outlook.com、Windows Live Mail 和其他客户端。
查看原始消息,它包含一个带有名称但没有文件名属性的内容类型。如果设置了文件名属性但 C# 库不使用此属性,则 Yahoo 工作正常。
这是 C# 为附件生成的标头:
Content-Type: application/octet-stream; name=test.pdf
这是适用于 Yahoo 的标头:
Content-Type: application/octet-stream; name=file2; filename=test.pdf
到目前为止,有人遇到过这个问题吗? C# 默认邮件发送有解决办法吗?
using (var message = new MailMessage("from@domain", "to@yahoo.com.br", "Test with attachment", "Test with attachment"))
{
var attachment = new Attachment(@"c:\temp\test.pdf"); // Same result using stream instead path to file.
attachment.Name = "test.pdf"; // Same result without this line.
message.Attachments.Add(attachment);
using (var smtp = new SmtpClient("smtp.domain", 587))
{
smtp.Credentials = new NetworkCredential("from@domain", "password");
smtp.Send(message);
}
}
【问题讨论】:
-
您是否尝试过设置附件的名称属性?你能告诉我们你的代码吗?
-
是的,我尝试设置文件名,作为流发送并传递文件路径。我会把代码说清楚。