2017-01-24 2 views
-1

Je traite les emails très bien. Maintenant, je rencontre des e-mails qui sont des fichiers PDF et ils doivent être en ligne car ils ne sont pas remarqués avec le .Attachments. Voici mon code. Je ne peux pas l'avoir. S'il vous plaît aider. Merci!mon programme C# ne télécharge pas les images en ligne

var message = mainFolder.GetMessage(i - 1); 

eCount++; 
// Get specifics of email 

var attachments = message.Attachments.ToList(); 

int attCnt = attachments.Capacity; 

string preChk = message.From.ToString(); 

var msgMsg = new MimePart(); 

var att2 = new List<MimePart>(); 

var mp2 = new List<Multipart>(); 

var iter = new MimeIterator(message); 

int mpCnt = 0; 


if (attCnt == 0) 
{ 

    while (iter.MoveNext()) 
    { 
     mpCnt += 1; 
     var mp = iter.Parent as Multipart; 

     var prt = iter.Current as MimePart; 

     if (mp != null && prt != null && prt.IsAttachment) 
     { //Check if an attachment slipped through 

      mp2.Add(mp); 

      att2.Add(prt); 
     } 
    } 
} 

// Si j'Allongez la iter.MoveNext, je peux percer jusqu'aux images iter.MoveNext

+0

C'est du code génial (un peu trop d'espace à mon goût, mais dans des limites raisonnables), mais comment pouvons-nous reproduire votre problème sans le courriel que vous utilisez? –

+0

Désolé pour les espaces. C'est le premier code que j'ai jamais fait et sur mon écran si je ne double pas d'espace, alors toutes les lignes sont connectées. Je vais devoir bricoler avec ça dans le futur ... maintenant à l'email. Bonne question! Je ne peux pas vraiment utiliser mon email de production, en raison de la confidentialité, mais je vais faire une capture d'écran probablement demain (im à propos de fait pour la journée), et vous montrer où ils peuvent être vus. Ensuite, essayez peut-être de reproduire le problème avec mes propres pièces jointes. Je sais, compliqué. Merci pour toute aide! –

+0

911 a été sur le chemin. J'aurais peut-être compris ... je vous le ferai savoir –

Répondre

0

Je ne le découvrir et je à peu près tout le code éliminé ci-dessus et condensé à seulement quelques lignes. Dans mes pièces jointes var, si c'est = 0, alors je connais son inline. Je l'ai fait:

var bd = message.BodyParts.ToList<MimeKit.MimeEntity>(); 

Habituellement, nous faisons la pièce jointe MimeKit.Mimepart dans la boucle des pièces jointes. J'ai découvert quelques choses. Faites var mp = bd.ElementAt (inAttCnt - 1); var ma2 = mp.ContentType.Name; Vérifiez que ma2 <> null. Ne faites pas un bd.Retirez vous allez jeter une exception! Le foreach s'en occupera! J'espère que cela pourra aider.