2016-01-13 2 views
3

Lorsque je reçois un courrier avec un (des) échange (s) d'Exchange via un protocole IMAP à l'aide de MailKit, la pièce jointe est manquante. Quand je fais:Pièces jointes manquantes à l'aide de Mailkit

string.Format("Mail has {0} attachments", mime.Attachments.Count()) 

Il signaler « 0 », même tho que le courrier lui-même contient une pièce jointe (je vois la pièce jointe si je l'ouvre dans le client Outlook), et lors de l'activation de la journalisation du protocole IMAP, il est clairement qu'il contient une pièce jointe:

S: X-MS-Has-Attach: yes 
... 
S: Content-Type: message/rfc822 
S: Content-Disposition: attachment; 
S: creation-date="Thu, 07 Jan 2016 09:16:53 GMT"; 
S: modification-date="Thu, 07 Jan 2016 09:16:53 GMT" 
... 
S: X-MS-Has-Attach: 
... 

drôle est l'en-tête dans la partie de fixation, dans le même package du serveur « S:: X-MS-a-Attach ».

Est-ce un problème connu, et comment puis-je le réparer afin de ne pas manquer les pièces jointes dans ces cas? Cela semble seulement arriver sur certains mails et se produire au hasard.

utilisant: MailKit 1.0.14.0 MimeKit 1.0.13.0

J'ai découvert qu'il ya une nouvelle mise à jour, mais je ne vais pas vraiment à jour si cela ne résoudra pas le problème de toute façon.

Répondre

5

Dans la version de MimeKit que vous utilisez, MimeMessage.Attachments est IEnumerable<MimePart>, mais un message/partie rfc822 est représentée par un MessagePart qui n'a pas sous-classe MimePart, elle sous-classe MimeEntity (qui est la classe de base pour MimePart). Dans les versions plus récentes, MimeMessage.Attachments est IEnumerable<MimeEntity> à la place, et inclura donc votre message/pièce jointe rfc822.

Vous pouvez contourner ce problème dans votre version de MimeKit en utilisant la propriété BodyParts au lieu de la propriété Attachments.

+0

La mise à jour semble résoudre le problème. Au moins, je peux voir que l'attachement compte correctement maintenant. À votre santé – grmihel