2016-10-10 31 views
1

當使用System.Net.Mail命名空間發送帶有任何雅虎帳戶附件的電子郵件時,附件將以「無標題」名稱而不是文件名進行下載。沒有文件名的附件

在雅虎郵件界面中,附件使用正確的名稱查找,但是當您下載它時,下載名稱會轉到所有附件的「無標題」。 Gmail,Outlook.com,Windows Live Mail和其他客戶端的電子郵件信息都很好。

查看原始消息,它強制使用名稱但不帶文件名屬性的內容類型。雅虎工作正常,如果文件名屬性設置,但C#庫不使用此。

這是用C#爲附件生成的頭:

Content-Type: application/octet-stream; name=test.pdf 

這是與雅虎的作品標題:

Content-Type: application/octet-stream; name=file2; filename=test.pdf 

任何人得到這個問題這麼遠? C#默認郵件發送是否有工作需要?

using (var message = new MailMessage("[email protected]", "[email protected]", "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("[email protected]", "password"); 
      smtp.Send(message); 
     } 
    } 
+0

您是否嘗試設置附件的名稱屬性?你能告訴我們你的代碼嗎? – HaukurHaf

+0

是的,我試着設置文件名,作爲流發送並傳遞文件路徑。我會把代碼說清楚。 –

回答

0

您是否嘗試明確指定內容類型?

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

是的,我也嘗試設置媒體類型。下載工作正常(沒有損壞)。唯一的問題是文件名和只有雅虎帳戶。 –

1

我找到了一個解決方案:

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

這添加缺少的屬性名在原始電子郵件和解決雅虎的限制。