2016-10-10 22 views
1

System.Net.Mail名前空間を使用して任意のYahooアカウントに添付ファイル付きの電子メールを送信すると、添付ファイルはファイル名ではなく「無題」の名前でダウンロードされます。ファイル名のない添付ファイル

Yahoo Mailインターフェイスでは、添付ファイルが正しい名前で表示されますが、ダウンロードするとダウンロード名はすべての添付ファイルの「無題」になります。同じ電子メールメッセージは、Gmail、Outlook.com、Windows Live Mailなどのクライアントでうまく動作します。

生のメッセージを見ると、それはファイル名属性を持たない名前のcontent-typeを保持します。ファイル名属性が設定されていてもC#ライブラリでこれを使用しないと、Yahooはうまく動作します。

添付ファイル用のC#によって生成されたヘッダです:

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

ヤフーと連携ヘッダーです:

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

誰もがこれまでのところ、この問題を取得しますか? C#のデフォルトのメール送信のための作業arroundはありますか?

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"; 

これは生の電子メールメッセージで不足しているファイル名の属性を追加し、ヤフーの制限を解決します。

関連する問題