Imap - Comment récupérer toutes les adresses d'un mail ?

Fermé
LuTo Messages postés 8 Date d'inscription mercredi 7 décembre 2005 Statut Membre Dernière intervention 8 janvier 2016 - 30 avril 2013 à 23:23
LuTo Messages postés 8 Date d'inscription mercredi 7 décembre 2005 Statut Membre Dernière intervention 8 janvier 2016 - 2 mai 2013 à 16:25
Bonjour,
Dans mon appli qui gère des emails, je n'arrive pas à récupérer toutes les adresses présentes dans le header, c'est-à-dire, dans les champs "To" et "Cc". J'utilise la librairie imap et quand j'utilise la fonction imap_header, les champs To et Cc ne retournent qu'une seule adresse (la première), même si j'ai envoyé cet email à plusieurs personnes.

J'utilise ce code pour récupérer le contenu du header :
$h = imap_header($mbox, $mail->msgno);
var_dump($h->to);

et il me retourne :
array(1) { [0]=> object(stdClass)#38 (3) { ["personal"]=> string(2) "LuTo" ["mailbox"]=> string(10) "luto" ["host"]=> string(8) "monsite.fr" } }

Pourtant, il y a bien 2 adresses. Il devrait me retourner quelque chose comme "array(2) {...", il me semble. J'ai même vérifié dans l'interface webmail que j'utilise par ailleurs et qui me donne bien 2 adresses pour ce mail.

Comme faites-vous pour récupérer un tableau contenant toutes les adresses ???
Merci !
A voir également:

5 réponses

Utilisateur anonyme
2 mai 2013 à 11:54
Salut salut,

C'est les champs toaddress et ccaddress:
$header = imap_headerinfo($mail,$j);
echo  $header->ccaddress."<br>";
echo  $header->toaddress."<br>";

Renvoie bien les différents destinataires et les adresses contenu dans le champ cc.

Pas chez toi?
0
LuTo Messages postés 8 Date d'inscription mercredi 7 décembre 2005 Statut Membre Dernière intervention 8 janvier 2016
2 mai 2013 à 12:01
Ben non, chez moi, ça ne renvoi que la première adresse, même s'il y en a plusieurs !
0
Utilisateur anonyme
2 mai 2013 à 12:19
hmm ben là je sais pas, ça fonctionne chez moi!

0
LuTo Messages postés 8 Date d'inscription mercredi 7 décembre 2005 Statut Membre Dernière intervention 8 janvier 2016
2 mai 2013 à 14:14
Oui, c'est curieux comme comportement. Le problème doit être ailleurs que dans mon code php, vu que j'ai trouvé des exemples de code similaires sur plusieurs sites.

Ce qui me surprends, c'est que je peux voir correctement les adresses en utilisant une interface webmail que mon hébergeur met à ma disposition pour accéder à ces emails. (Je suis chez OVH).
Donc l'info est bien là, par contre, je n'arrive à y accéder...

Merci d'avoir regardé !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
LuTo Messages postés 8 Date d'inscription mercredi 7 décembre 2005 Statut Membre Dernière intervention 8 janvier 2016
2 mai 2013 à 16:25
Ce n'est pas entièrement RESOLU, mais j'ai un début de solution.

La fonction imap_fetchheader me donne la liste des adresses dans les champs "To" et "Cc", la plupart du temps. J'utilise un bout de code donné sur php.net à la page de imap_fetchheader :
$headers=imap_fetchheader($imap, $msgid);
preg_match_all('/([^: ]+): (.+?(?:\r\n\s(?:.+?))*)\r\n/m', $headers, $matches);

C'est pas mal car ça me donne 3 éléments dans le tableau $match avec un peu toutes les infos dedans.

Malheureusement, il y a des serveurs mail qui ne remplissent pas bien ces champs (comme yahoo.com, par exemple). Au lieu de mettre les vraies adresses, ils mettent les libellés ("Jean Dupont" au lieu de "jean.dupont@yahoo.com"). A ce moment-là, je me rabats sur la fonction imap_header qui me donne toujours au moins une vraie adresse email.

C'est mieux que rien mais si il y a plusieurs adresses dans ce genre de mail, le perds la liste des adresses ...

Je suis toujours preneur si vous avez des idées !
Merci.
0