2016-06-06 17 views
0

Ich habe mir viele andere Fragen zu Stackoverflow angeschaut, aber ich bin immer noch verwirrt.Wie können mehrere Anhänge per Mail mit MailKit heruntergeladen werden?

Ich möchte die Anhänge von E-Mails herunterladen - ich konnte dies erfolgreich tun, aber nur, wenn die E-Mail einen Anhang hatte; Wenn eine E-Mail mehrere Anhänge enthält, funktioniert sie nicht mehr.

Wie kann ich mehrere Anhänge per E-Mail herunterladen?

Gibt es auch eine Möglichkeit, die Dateierweiterung beim Herunterladen zu bestimmen? Derzeit, zum Beispiel, wenn es einen PDF-Anhang gibt, wird die Datei heruntergeladen, aber ohne .pdf, so dass Windows den Dateityp nicht kennt.

Der folgende Code ist von hier: MailKit save Attachments. Ich habe meinen Code davon abgeleitet.

foreach (var attachment in message.Attachments) 
{ 
    using (var stream = File.Create ("fileName")) 
    { 
     if (attachment is MessagePart) 
     { 
      var part = (MessagePart) attachment; 
      part.Message.WriteTo (stream); 
     } 
     else 
     { 
      var part = (MimePart) attachment; 
      part.ContentObject.DecodeTo (stream); 
     } 
    } 
} 

Bitte helfen! Vielen Dank!

Antwort

1

Der eingefügte Code speichert bereits alle Anhänge.

Schauen Sie sich die rohe Nachrichtenquelle an. Hat jeder "Anhang", den Sie als Anhang betrachten, eine Kopfzeile Content-Disposition: attachment? Wenn nicht, ist das das Problem, das Sie treffen.

Sie können stattdessen message.BodyParts verwenden und Ihre eigene Logik anwenden, um festzustellen, ob das Teil das ist, was Sie als "Anhang" betrachten würden.

Gibt es auch eine Möglichkeit, die Dateierweiterung beim Herunterladen zu bestimmen? Derzeit, zum Beispiel, wenn es einen PDF-Anhang gibt, wird die Datei heruntergeladen, aber ohne .pdf, so dass Windows den Dateityp nicht kennt.

Ja. Sie können die Dateierweiterung auf der FileName Eigenschaft auf MimePart Objekte überprüfen.

+0

Genau das war das Problem - danke! Es war nicht die Anhaftung als "Anhang" zu erkennen (also gab es keine 'Content-Disposition: Attachment'-Header), weil es durch den E-Mail-Text kam, also war 'message.BodyParts' genau das, was ich brauchte. Danke für die Hilfe. – coltonhurst