2016-03-25 12 views
8

Sono provo salvare gli allegati dal messaggioMailKit salvare gli allegati

foreach(MimeKit.MimeEntity at message.Attachments) 
{ 
    at.WriteTo("nameFile"); 
} 

file salvato, ma quando apro ottengo l'errore il file è danneggiato o troppo grande Le dimensioni di questo file è di 88 kb, ma la dimensione del file dovrebbe essere uguale a 55 kb.

Penso che in tutti i file dei messaggi registrati.

Come registrare solo l'allegato?

MailKit v1.2.0.0 MimeKit 1.2.0.0

risposta

21

Risparmiate l'intero oggetto MIME (comprese le intestazioni). Quello che devi fare è salvare il contenuto.

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); 
     } 
    } 
} 

Spero che questo aiuti.

+0

var part = (MimeKit.MessagePart) allegato; qui ottengo un'eccezione "Impossibile portare il tipo di oggetto MimeKit.MimePart tipo MimeKit.MessagePart – sergpc

+0

part.ContentObject.DecodeTo (stream); e qui ottengo l'errore:" MimeKit.MessageParts "non contiene una definizione per" Content_Object " Impossibile trovare un metodo di espansione "ContentObject", ricevendo un primo argomento di tipo "MimeKit.MessagePart" (mancante utilizzando direttiva o un riferimento di assembly?) può essere un problema nelle versioni? – sergpc

+0

qual è la tua versione MimeKit e MailKit ? – sergpc