Comment afficher la bonne partie texte d'un mail ayant plusieurs partie
vieuxpere
Messages postés195Date d'inscriptionsamedi 3 janvier 2004StatutMembreDernière intervention17 décembre 2014
-
1 juil. 2009 à 09:33
vieuxpere
Messages postés195Date d'inscriptionsamedi 3 janvier 2004StatutMembreDernière intervention17 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;
A voir également:
Comment afficher la bonne partie texte d'un mail ayant plusieurs partie