2016-03-25 2 views
8

Je vais essayer enregistrer des pièces jointes de messagesMailKit Enregistrer les pièces jointes

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

fichier sauvegardé, mais quand je l'ouvre, je reçois l'erreur le fichier est corrompu ou trop grand La taille de ce fichier est de 88 kb, mais la taille du fichier doit être égale à 55 ko.

Je pense que dans tous les fichiers de messages enregistrés.

Comment enregistrer uniquement la pièce jointe?

MailKit v1.2.0.0 MimeKit 1.2.0.0

Répondre

21

Vous enregistrez l'ensemble objet MIME (y compris les en-têtes). Ce que vous devez faire est de sauvegarder le contenu.

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

Espérons que cela aide.

+0

var part = (MimeKit.MessagePart) pièce jointe; ici, je reçois une exception "Impossible d'apporter le type d'objet MimeKit.MimePart type MimeKit.MessagePart – sergpc

+0

part.ContentObject.DecodeTo (flux); et ici je reçois erreur:" MimeKit.MessageParts "ne contient pas une définition de" Content_Object " "Impossible de trouver une méthode d'expansion" ContentObject ", en recevant un premier argument de type" MimeKit.MessagePart "(manquant en utilisant la directive ou une référence d'assembly?) peut être un problème dans les versions? – sergpc

+0

quelle est votre version MimeKit et MailKit ? – sergpc