Comment afficher la bonne partie texte d'un mail ayant plusieurs partie

vieuxpere Messages postés 195 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 17 décembre 2014 - 1 juil. 2009 à 09:33
vieuxpere Messages postés 195 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 17 décembre 2014 - 1 juil. 2009 à 18:49
Bonjour, j'ai une appli qui va rechercher les mails sur un serveur web et les affiche dans un WebBrowser sous forme de fichier HTML. Jusque là, je n'ai pas de probléme.
 
Le probléme que j'ai par contre, c'est que certains mails, qui peuvent contenir plusieurs parties (texte et piéce jointe), on aussi parfois plusieurs parties texte (je le constate puisque pour un même message j'ai plusieurs réponses via un : if IdMessage1.MessageParts.Items[j] is TIdText  then...)  ce qui fait qu'avec le code qui suit je ne conserve que la derniére partie texte d'un message (ayant écrasé les précédants).

Aussi j'aurai besoin de savoir comment je peux identifier dans un même message (selon peut-être son encodage ou autre chose ?) la bonne partie texte à afficher ?

Exemple de régle : Pour un message en base64, ayant deux piéces jointes extraire la premiere partie texte du message (est-ce que ce genre de régle peut-avoir un sens ?).

PS : J'utilise Delphi 7 et les composants Indy.

Merci par avance pour vos réponses,

Mon code allégé :

// Boucle des messages
for i := 1 to NbrMsgs do
begin  // Début I


//On récupère l'entête du Ième message
IdPOP31.Retrieve(i, IdMessage1);


// Si on a plusieurs parties dans le mail alors on a une pièce jointe
if IdMessage1.MessageParts.Count > 0 then


// Boucle des differentes parties de chaque message (texte et pieces jointes)
for j := 0 to IdMessage1.MessageParts.count -1 do
      begin


      // SI C'EST UNE PARTIE TEXTE
      if IdMessage1.MessageParts.Items[j] is TIdText  then
          Begin // Debut K


          // Contruction du mail recus en page HTML (dans le cas où le mail recu ne soit que du texte)
          TexteHTML:=TStringList.create;


          // Construction du message HTML
          TexteHTML.Add(TIdText(IdMessage1.MessageParts.Items[j]).Body.text);


          // Enregstre le fichier HTML
          TexteHTML.SaveToFile('c:\Messages\Mail.html');


          End;

2 réponses

Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
1 juil. 2009 à 13:39
Il y a des sources traitant de cela au sein même de DelphiFr : cherche avec des mots clefs appropriés dans le moteur de recherche CS !

Cordialement, Bacterius !
0
vieuxpere Messages postés 195 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 17 décembre 2014
1 juil. 2009 à 18:49
Bonjour et merci de ta réponse.

Si j'ai posté ce message c'est que je n'ai rien trouvé sur le site.

As-tu le lien de ces sources ou les bons mots clés ?

Merci par avance,
0
Rejoignez-nous