C# 不带文件名的附件

C# 不带文件名的附件,c#,email,C#,Email,使用System.Net.Mail命名空间向任何Yahoo帐户发送带有附件的电子邮件时,下载的附件将使用“untitled”名称,而不是文件名 在Yahoo Mail界面中,附件的名称是正确的,但是当您下载它时,所有附件的下载名称都会变为“untitled”。同样的电子邮件也适用于Gmail、Outlook.com、Windows Live mail和其他客户端 查看原始消息时,它包含一个具有name但没有filename属性的内容类型。如果设置了filename属性,Yahoo可以正常工作,但

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

在Yahoo Mail界面中,附件的名称是正确的,但是当您下载它时,所有附件的下载名称都会变为“untitled”。同样的电子邮件也适用于Gmail、Outlook.com、Windows Live mail和其他客户端

查看原始消息时,它包含一个具有name但没有filename属性的内容类型。如果设置了filename属性,Yahoo可以正常工作,但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);
        }
    }

是否尝试显式指定内容类型

var attachment = new Attachment(... , MediaTypeNames.Application.Octet);
我找到了一个解决方案:

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

这将在原始电子邮件中添加缺少的filename属性,并解决Yahoo限制。

您是否尝试设置附件的Name属性?你能给我们看一下你的代码吗?是的,我试着设置文件名,以流的形式发送,并为文件传递路径。我会把代码写清楚。是的,我也试过设置媒体类型。下载工作正常(未损坏)。唯一的问题是文件名,而且只适用于雅虎帐户。