没有文件名的附件

时间:2016-10-10 13:06:16

标签: c# email

使用System.Net.Mail命名空间向任何Yahoo帐户发送带附件的电子邮件时,将使用“无标题”名称下载附件,而不是文件名。

在Yahoo Mail界面中,附件以正确的名称显示,但是当您下载时,下载名称将变为“无标题”以显示所有附件。同样的电子邮件可以与Gmail,Outlook.com,Windows Live Mail和其他客户端一起使用。

查看原始消息,它构成一个名称但没有文件名属性的内容类型。如果设置了filename属性但是#C#库不使用它,雅虎工作正常。

这是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);
        }
    }

2 个答案:

答案 0 :(得分:2)

我找到了解决方案:

attachment.ContentDisposition.FileName = "test.pdf";

这会在原始电子邮件中添加缺少的文件名属性并解决Yahoo限制。

答案 1 :(得分:0)

您是否尝试过明确指定内容类型?

var attachment = new Attachment(... , MediaTypeNames.Application.Octet);