Récuperer ses contacts MSN, Gmail, Yahoo avec PHP
Classe PHP pour vos contacts MSN, Gmail Yahoo…
Pour les besoins d’un projet au boulot, j’ai du faire quelques recherches afin de trouver comment récupérer les contacts des boites msn, yahoo, gmail, et autres… le problème est que sur le net on trouve de nombreux Web service proposant ces fonctionnalités mais tres peu de librairies libres …
Apres de multiples recherches je suis tombé sur plusieurs classes intéressantes, et j’ai donc pensé les rassembler pour en faire un petit paquetage simple d’emploi
Présentation de la classe Contacts
En utilisant le pattern decorator et une petite factory je suis arrivé à faire en sorte de simplifier un maximum son utilisation
Un exemple du decorator avec Gmail
-
class GmailDecorator
-
{
-
private $_instance;
-
private $_user;
-
private $_pass;
-
-
public function __construct ($user, $pass)
-
{
-
require (‘libs/importGmail.class.php’);
-
$this->_instance = new GMailer;
-
$this->_user = $user;
-
$this->_pass = $pass;
-
}
-
-
public function getContacts ()
-
{
-
throw new Exception (“Aucune instance GMailer”);
-
$this->_instance->setLoginInfo ($this->_user, $this->_pass, “+1GMT”);
-
if ($this->_instance->connect ())
-
{
-
$this->_instance->fetchBox (GM_CONTACT, ‘all’, ”);
-
$snapshot = $this->_instance->getSnapshot (GM_CONTACT);
-
$this->_instance->disconnect ();
-
$i = 0;
-
foreach ($snapshot->contacts as $contact)
-
{
-
$result[$i][‘name’] = $contact[‘name’];
-
$result[$i][‘email’] = $contact[‘email’];
-
$i++;
-
}
-
return $result;
-
}
-
else
-
throw new Exception (‘Impossible de se connecter’);
-
}
-
}
-
-
class YahooDecorator {}
-
class MSNDecorator {}
-
# etc …
-
Ensuite la Factory s’occupe de nous retourner l’objet en fonction du type qu’on lui passe en paramètre
-
class Contacts
-
{
-
-
{
-
{
-
$class = “{$type}Decorator”;
-
return new $class ($user, $pass);
-
}
-
}
-
}
Etat du paquetage Contacts (MAJ : 27/08/08)
| Gmail | Retourne un tableau vide | |
| Yahoo! | Teste réussi avec @yahoo.fr | |
| AOL | Teste réussi avec @aol.com | |
| Lycos | Teste réussi avec @lycos.com | |
| MSN | Teste réussi avec @hotmail.fr @hotmail.com |
NOTE : Gmail, AOL, Yahoo, et Lycos, n’ont pas besoin du suffixe @host.com
Un petit exemple
Tableau de bord




5 janvier 2008 at 2:41
Salut!
j’ai voulu tester ton code mais il ne marche que sous PHP5?
il n’y a t’il pas un moyen de le faire fonctioner sous PHP4?
5 janvier 2008 at 11:45
Salut Jérémy
Oui le code fonctionne seulement sur PHP5.
Pour PHP4 tu peux essayer en enlevant la visibilité des methodes et pour les attributs tu remplaces par “var”
Ensuite il m semble que PHP4 ne gere pas les bloc try catch ainsi que les exceptions, donc il faudra que tu enleves les “throw new Exception (’msg’)”, tu peux les remplacer par un “die (’msg’)”
et dans le fichier usage.php il faut que tu enleves le bloc try catch.
5 janvier 2008 at 14:47
Oki!
merci je vais tester ca!
;-)
8 janvier 2008 at 18:15
j’aimerais savoir ce qu’il faut faire quand on a un serveur PHP4 parce que j’ai essayé le commentaire au dessus et ça à l’air de pas fonctionner. Merci d’avance.
9 janvier 2008 at 17:00
Salut,
C’est vraiment excellent !
J’ai un problème avec la session quand je recupère du Gmail, ca me detruit la session, alors que j’en utilise dans mon site… ???
Autre question, peut-on aussi recuperer les contacts Hotmail ?
En tout cas merci encore.
Sebastien
13 janvier 2008 at 18:39
Salut tos,
Déjà, je ne suis pas à ta dispo, donc… cool steuplé :), ensuite donne moi les erreurs que tu as je vais voir si je peux t’aider ?
Salut Sebastien
La classe fonctionne avec Hotmail, normalement tous les compte Live devraient fonctionner sans probleme (live.com, hotmail.fr/com/be etc…).
Pour ton probleme de session, GMailer utilise bien les sessions mais je ne vois pas pourquoi il detruirait tes sessions… là je ne peux pas t’aider.
13 janvier 2008 at 19:22
Quand je lance Usage.php j’ai l’erreur “Curl n’est pas install”.
J’ai enlevé le ; devant la ligne “extension=php_curl.dll” dans les fichiers php.ini-dist et php.ini-recommended, mais rien n’y fait :S.
Comment y remédier?
Merci d’avance.
13 janvier 2008 at 21:44
hum a mon avis ce n’est pas suffisant, il faut que tu installes libcurl, tu as l’air d’etre sous windows et je ne sais pas du tt comment ca fonctfionne, mais google à surement cette info ;)
14 janvier 2008 at 22:29
Chalu, lorsque je lance le script, je tombe direct sur le message:
Invalide type, utilisez : Gmail, MSN, Yahoo, Lycos, AOL.
J’ai pourant tout ce qu’il faut, php5, libcurl…
16 janvier 2008 at 1:25
Salut Sahid,
Excellent ce package! j’ai teste. Cela fonctionne bien avec Hotmail et yahoo. Avec gmail, j’avais moi aussi un probleme de session comme sebastien, cela venait de contact.php dans la class GmailDecorator a la ligne:
“$this->_instance->disconnect ();”
je l’ai mise en commentaire et maintenant gmail fonctionne aussi.
Par contre j’ai un soucis avec Lycos, j’ai cree un compte et rajoute des contacts pour tester, mais le resultat est une page blanche…
Une idee?
Merci.
16 janvier 2008 at 13:48
Apparement la récup de mail via gmail ne fonctionne plus, peut etre que Gmail a modifié qq chose de son côté et qu’il faudrait mettre à jour un define ?
16 janvier 2008 at 19:40
meme pb que anthony
Page blanche pour lycos, rien pour gmail.
ca fait 2/4…
16 janvier 2008 at 20:04
Pour lycos et aol, il y a une erreur dans contact.php au niveau de de l’appel des fonctions:
“$contacts = (array) @$this->_instance->getContactList ();”
il y avait un ’s’ en trop, dc ca fesait appel a une fonction qui n’existait pas.
Mais bon apres cette modif, il me renvoie pas une page blanche mais un array vide…..
16 janvier 2008 at 21:40
Anthony, si toute fois, tu arrives à faire marcher ce script pour les 4 comptes, pourrais tu m’en informer ici stp.
Par avance, merci.
17 janvier 2008 at 2:28
Salut,
j’vais essayer de corriger les problemes ce week end,
si vous avez des corrections à poster n’esités pas (http://pastebin.funraill.org/)
j’aurais peut etre du le préciser, mais aucune des classes que j’utilise est officiel… je ne peux donc rien garantir. mais au moins corriger les bugs (;
24 janvier 2008 at 8:46
bonjour,
juste une question , peux tu me donner un chemin afin de retrouver mon mot de pass de GMAIL car je n est pas creer d adresser de recuperation .je suis dans une galere pas possible…….
merci de ton aide
26 janvier 2008 at 19:52
Toujours aucune nouvelle concernant le problème avec gmail ?
28 janvier 2008 at 13:47
Salut a tous !
Si ca peut aider quelqu’un j’ai fait un switch qui va vous permettre d’eviter une etape a la connexion en devinant le type de compte ..
A placer avant $type = ”; dans usage.php
29 janvier 2008 at 11:34
Salut à tous,
lorsque je teste un compte gmail dans l’iframe de l’exemple, ça marche nickel.
Par contre lorsque j’utilise le package télécharger impossible de récupérer mes contacts.
Y a t il une différence entre l’exemple et le fichier du package.
Merci d’avance.
4 février 2008 at 22:00
Salut,
Merci Sahid pour toute ces modifs, ca semble fonctionner correctement :)
11 février 2008 at 15:41
Salut et merci infiniment pour ta class, qui est vraiment très pratique ! ;)
Juste une petite remarque:
Tu devrais peut-être revoir la suppression des sessions par @session_unset() et @session_destroy(); ! Parce que moi même j’utilise des session et si je fais appel à l’une des class ex: “importGmail.class.php”, alors elle supprime auto toutes les sessions que j’ai initier. Ce qui est très gênant !
Actuellement je les aient mises en standby, le temps que je les réorganises !
Merci à toi !
27 février 2008 at 14:12
bonjour,
lorsque tout d’abord merci pr ce script ! il marche ca il n’y a pas de doute par contre lorsque le l’exécute, il n’y a aucune mise en forme du texte ->
Array ( [0] => Array ( [name] => nom [email] => nom@hotmail.com ) [1] => Array ( [name] => nom [email] => nom@hotmail.fr )
je voulais savoir si c’était normal et qu’il fallait que je fasse moi mm la mise en forme ou bien qu’une class ne passe pas?
merci.
20 mars 2008 at 12:05
Bonjour Sahid,
Simplement, merci pour cette belle contrib. Il me reste quelques corrections à faire pour adapter à mon cas précis, mais comme tu m’as grandement avancé dans les travaux…
bref. Merci
Seb
31 mars 2008 at 13:11
Bonjour et merci pour ce package.
Je l’utilise depuis 1-2 mois et je n’ai jamais eu de problème.
Pourtant depuis 5 jours je n’ arrive plus à me connecter aux comptes en ‘msn.com’, alors que les autres comptes hotmail marchent bien, ainsi que les autres webmail …
Quelqu’un aurait une idée de ce qui a pu se passer ?
9 avril 2008 at 16:06
Salut, merci pour ton script qui fonctionne bien, je voulais savoir si on peut implementer une methode pour envoyer un email grace a tes classes. Si oui, que faut’il faire pour envoyer un e-mail avec les identifiants de la personne fraichement connecter?
Merci pour ta future reponse, bonne journee et bonne continuation!
11 avril 2008 at 15:38
Bonjour, je viens de tester la récupération des contacts sur un compte hotmail (en hotmail.fr) fraichement créée avec un contact bidon de rajouté, mais celui ci n’est pas récupéré (je reçoit un tableau vide) et je n’ai pas de message d’erreur, est-ce normal?
Merci.
20 avril 2008 at 1:34
Bonjour,
tout d’abord merci pour cette class fort pratique.
Par contre j’ai mis un peu le nez dedans, et j’ai du mal a tout comprendre…
je te pose donc une question : dans le meme genre, sans s’identifier est-il possible de recuperer le nom et le status (Online Offline) d’un contact msn juste avec le mail ?
Car j’ai trouver des solution mais en java ou C donc non utilisable sur un site web.
Je te remercie d’avance si tu me lance quelques pistes,
Sinon je confirme ca marche toujours sur gmail et msn.
Merci
Bye ;)
20 avril 2008 at 9:45
Salut Nelson,
Comme ça je ne peux pas te dire, mais si tu as trouvé en C ou Java tu devrais pourvoir le faire en PHP.
jete un oeil sur la doc du protocoles,
ensuite avec curl c assez simple d’envoyer les trames :)
http://www.hypothetic.org/docs/msn/index.php
20 avril 2008 at 16:49
Pour le probleme de session avec gmail, il suffit de remplacer
dans le fichier importGmail.class.php par
3 mai 2008 at 23:53
Test passé sur @msn.com !
9 mai 2008 at 11:31
Merci pour ce script. C’est très intéressant de pouvoir récupérer des adresses msn via PHP. Je ne pensais pas que cette fonctionnalité été possible
5 juin 2008 at 20:45
Salut Sahid,
je commence par te féliciter pour ce programme très pratique. J’ai un problème, avec hotmail le script fonctionne. mais avec yahoo il m’affiche Array ()
24 juin 2008 at 17:24
Bonjour,
A chaque fois que je fais un essai sur hotmail.fr ou hotmail.com, la liste des contacts est vide, est ce normal ?
31 juillet 2008 at 16:23
salut et felicitation c un code trop cool
mais j’ai un soucis avec GMAIL
tjs il m’affiche Array()
pourtant ici il m’affiche mes contactes?
4 août 2008 at 11:34
Salut ,
merci pour le code, par contre il y a un problème même dans ton site, il retourne le mail dans la variable name pour yahoo.com.
Comment peux ton régler cela?
merci
27 août 2008 at 11:38
Il me semble que le Gmail ne fonctionne plus, pouvez vous vérifier thx.