2016-10-10 9 views
1

Wenn Sie den System.Net.Mail-Namespace verwenden, um eine E-Mail mit Anhang an ein Yahoo-Konto zu senden, wird der Anhang mit dem Namen "untitled" anstelle des Dateinamens heruntergeladen.Anhang ohne Dateiname

In der Yahoo Mail-Oberfläche sieht der Anhang mit dem korrekten Namen aus, aber wenn Sie ihn herunterladen, wird der Download-Name für alle Anhänge auf "untitled" gesetzt. Die gleiche E-Mail-Nachricht funktioniert gut mit Google Mail, Outlook.com, Windows Live Mail und anderen Clients.

Mit Blick auf die Raw-Nachricht enthält es einen Inhaltstyp mit Namen, aber ohne Dateinamenattribut. Die Yahoo funktioniert einwandfrei, wenn das Dateinamensattribut gesetzt ist, aber die C# -Bibliothek dies nicht verwendet.

Das ist die von C# generierten Header für Anlagen:

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

, dass der Header ist, die mit Yahoo funktioniert:

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

Wer bisher dieses Problem bekommen? Gibt es eine Arbeit für C# Standard Mail senden?

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

Haben Sie versucht, die Name-Eigenschaft des Anhangs festzulegen? Können Sie uns Ihren Code zeigen? – HaukurHaf

+0

Ja, ich habe versucht, den Dateinamen einzustellen, als Stream zu senden und einen Pfad für die Datei zu übergeben. Ich werde den Code einfügen, um es klarzustellen. –

Antwort

0

Haben Sie versucht, den Inhaltstyp explizit anzugeben?

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

Ja, ich habe versucht, Medientypen auch einzustellen. Der Download funktioniert einwandfrei (nicht beschädigt). Das einzige Problem ist der Dateiname und nur mit Yahoo-Konten. –

1

fand ich eine Lösung:

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

das fehlende Dateiname Attribut in der rohen E-Mail-Nachricht Dieses Add und die Yahoo Begrenzung lösen.

Verwandte Themen