Récupérer mail avec IMAP

Répondre
caporga
caporga
Déconnecté
caporga
Bonjour la communauté, salut La globule,

Mon but est de mettre en base de donnée un certain nombre d'infos mails (la date, le sujet, qui me l'envoi et le texte) pour simplifier mon stockage. je suis bloqué avec la fonction imap_fetchbody
caporga
caporga
Déconnecté
caporga
Voici le code
  1.  
  2. <?php
  3.             $mbox=imap_open("{xxxxxxxxxx:110/pop3}", "xxxxxxxx", "xxxxxxxx"); 
  4.             $headers=imap_headers($mbox); 
  5.             if($headers==false){ 
  6.             echo "Erreur !\n"; 
  7.             }else{ 
  8.             while(list($key,$val)=each($headers)){ 
  9.             $no=$key+1; 
  10.             $header=imap_headerinfo($mbox, $no); 
  11.             $from=$header->from; 
  12.             $subject=$header->subject; 
  13.             
  14.             $mailtest="xxxxxxxx"; 
  15.             if($mailtest=="".$from[0]->mailbox."@".$from[0]->host.""){ 
  16.             echo "Message de:".$from[0]->personal." [".$from[0]->mailbox."@".$from[0]->host."]<br>
  17.                    ".$subject.""; 
  18.             $text=imap_fetchbody($mbox, $no, 1); 
  19.  
  20.             //$text=strip_tags($text);
  21.             //$text=utf8_encode($text);
  22.             
  23.             
  24.             $text=str_replace("----- Original Message -----", "", $text); 
  25.             $text=str_replace("From:", "De :", $text); 
  26.             $text=str_replace("To:", "Pour :", $text); 
  27.             $text=str_replace("Sent:", "Envoyé :", $text); 
  28.             $text=str_replace("Subject:", "<strong>Sujet :</strong>", $text); 
  29.             //$text=str_replace(">", "", $text);
  30.             $text=str_replace("=20", "", $text); 
  31.             $text=str_replace("=E9", "é", $text); 
  32.             $text=nl2br($text); // qu'en affichage
  33.             echo "".$text."<br><hr>"; 
  34.             } 
  35.             
  36.             } 
  37.             } 
  38.             imap_close($mbox); 
  39.             ?> 
caporga
caporga
Déconnecté
caporga
mon but est récupérer le texte brut, mais uniquement le texte brut.

y a t il une solution ?
  1. $text=imap_fetchbody($mbox, $no, 1);
  2.  
LA GLOBULE
LA GLOBULE
Déconnecté
111 111 111 x 111 111 111 = 12 345 678 987 654 321
Comment es tu sur que la partie texte du mail correspond à la première partie du mail ?
Et d'ailleurs, comment être sur que cette partie texte existe ?

A mon avis, tu brules quelques étapes la :)
caporga
caporga
Déconnecté
caporga
salut la globule,

C'est bien mon problème, rajouter des étapes pour que cela fonctionne mieux.

avec le code établit, j'arrive à récupérer le texte, il s'écrit sans problème, même trop car j'ai le corps du texte + l'HTML + les ajouts From to sent etc. en gros le texte n'est pas propre. actuellement je n'arrive pas à récupérer uniquement le texte.
LA GLOBULE
LA GLOBULE
Déconnecté
111 111 111 x 111 111 111 = 12 345 678 987 654 321
Tu as imap_fetchstructure qui pourrait t'aider à décortiquer les mails.

Si tu veux un conseil, lis à fond la doc PHP des fonctions IMAP, mais aussi la spécification du protocole IMAP.
Ce n'est pas parce qu'un code fonctionnera sur un ou deux exemples qu'il pourrait être jugé comme bon.

De plus, comme les clients mails font un peu tout et n'importe quoi, même si ton code respecte le protocole, c'est possible de ne pas arriver "à lire" certains mails.

PS : y'a rien de plus chiant que le mail à gérer
caporga
caporga
Déconnecté
caporga
ok, merci, je vais me replonger la dedans.

++
Répondre
Accès rapide :

Remonter Remonter
L'éditeur javascript - CSS - Gentoo - Tutoriaux PHP - Tutoriels PHP - Bretagne - php - Moto - Kit graphique