Récuperer ses contacts MSN, Gmail, Yahoo avec PHP
Classe PHP pour vos contacts MSN, Gmail Yahoo… – get 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
-
class Contacts
-
{
-
public static $arr_type = array (‘Gmail’, ‘MSN’, ‘Yahoo’, ‘Lycos’, ‘AOL’);
-
-
public static function factory ($user, $pass, $type)
-
{
-
if (in_array ($type, self::$arr_type))
-
{
-
$class = "{$type}Decorator";
-
return new $class ($user, $pass);
-
}
-
else throw new Exception (‘Invalide type, utilisez : ‘.implode (", ", self::$arr_type));
-
}
-
}
Etat du paquetage Contacts (MAJ : 07/09/08)
| Gmail | Le probleme libg110 est corrigé | |
| 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
Share and Enjoy
















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 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.
1 septembre 2008 at 8:48
Bonjour,
Quelqu’un aurait-il une solution pour Gmail?
J’ai l’erreur “[snapshot_error] => libg110″
J’ai essayé les solutions proposées sur http://gmail.sayni.net/forum/viewtopic.php?f=3&t=181&p=1583#p1583 mais rien ne fonctionne :-(
Merci d’avance!
5 septembre 2008 at 18:24
Bonjour,
Je vois que sur votre site le petit exemple fonctionne avec gmail. Or lorsque je récupère votre script je n’arrive pas a obtenir autre chose que des tableaux me retournant null/null.
Je précise que libgmailer.php fonctionnait avant juillet 2008, date à laquelle google a visiblement effectué des changements.
Pourriez vous m’indiquer si vous avez effectué des modifications sur la version de test ici présente et que votre archive contient bien la classe libgmailer.php que vous utilisez dans cette meme démonstration ?
D’avance merci infiniment.
3 octobre 2008 at 19:36
salut, j’ai un pb
j’ai fais un var_dump sur le fp (dans la classe importMsn …)
et l’attribut seekable est sur false
qu’est ce qui faut que je règle pour qu’il passe sur true
parce que sinon, rien ne fonctionne
mais en tout cas un super grand merci pour ces aides, c’est bien documenté, propre … et ça aide vachement, je te remerci bcp
14 octobre 2008 at 20:18
Genial ! Un grand merci :)))
21 octobre 2008 at 0:33
Fonctionne super sur @hotmail.fr, pas encore testé avec les autres.
Une grand merci et bravo
27 octobre 2008 at 16:00
salut les gars,
je ne suis pas expert en informatique et j’ai du mal à comprendre votre jargon, y a t’il un moyen simple pour un novice comme moi pour récupérer un mot de passe gmail et free, c’est très important pour moi
merci
nicoloestla@yahoo.fr
29 octobre 2008 at 16:45
Je cherchais justement une solution, pour un projet qui me trotte en tête depuis quelques semaines déjà.
Je vais me dépêcher de tester ça. ;-) Mais quoiqu’il en soit, je te remercie déjà pour cet article. :-)
2 novembre 2008 at 1:43
Malheureusement pour moi, mon hébergeur ne daigne pas laisser le script faire quoi que ce soit. En local ça marche, pas pas sur mon serveur. :-)
Celui-ci est pourtant PHP 5. Aurais-tu une idée de ce que pourrait être le problème, s’il te plait ? Les symptômes : un long chargement, puis une page blanche. Ca m’a vaguement rappelé un time-out. :-/
2 novembre 2008 at 20:33
bjr voila j’ai un probleme jai creer un compte msn il y a quelques jours ms aujourdhui j’ai voulu me connecter je n’y arrivais plus. j’y ai ajouter qu’une personne. dc je pense que cette personne a pirater mon compte non seulement mon mot de passe a ete voler ms auusi ma question secrete . pouvez vous m’aider a la retrouver svp merci.l’adresse pirater c melanie.1979@live.fr et le mot de passe pirater c’etait chaton. vs pouvez me repondre a ah_lame_23@hotmail.fr
21 novembre 2008 at 16:56
Yop,
De la balle ton taf Sahid ;)
J’ai lu tous les commentaires, et on se rend compte du nombre de boulets présents sur le net incapables de remercier, et sortant juste des trucs du genre : “ça marche pas! :(” …
Moi je dis joli taf, y a en effet quelques bugs, mais j’essai comme tout le monde de remédier à tout cela.
En tout cas si y a des gens qui ont des résolutions de bugs, n’hésitez pas à poster. Ça fais plaisir à tout le monde.
En ce qui me concerne, j’ai juste un problème de connexion. Par exemple, pour un hotmail.fr, il va me falloir entre 3/4 essais avant qu’il me récupère mes contacts… Pourtant la session msn sur mon pc est bien coupée à chaque essai.
C’est assez chelou, et je ne vois pas d’où ça peux venir.
Merci encore à toi.
1 décembre 2008 at 19:05
salut je vous s aime laisse notre annonce sur mon site
8 décembre 2008 at 18:26
Salut,
je ne peux pas arriver à connecter avec mon compte AOL … tous les autres fonctionne bien.. peut-être AOL a change son mode de connéxion ??
Merci de repondre et excuse de mon francais incorrect :-P
Simon
9 décembre 2008 at 7:24
Super script sauf que je dois le faire tourner sur PHP4.
j’ai enlevé les public, try catch et autres choses mais cela ne fait rien au moment de la connexion, il ne se logue pas.
Est-ce que quelqu’un aurait la gentillesse de me faire un copier coller de contacts.php, Usage.php et éventuellement les classes s’il est nécessaire de les changer pour que cela fonctionne sous PHP4 ?
Un grand merci par avance
17 décembre 2008 at 19:49
Salut,
Super ton script ça marche nikel !
Par contre en effet AOL ne marche plus. Tu avais récuperé des infos comment pour AOL ? voir si ça a changé.
Merci
5 janvier 2009 at 20:46
Salut tout d’abord merci pour ce script génial
J’ai juste un petit soucis avec hotmail, il semblerait qu’il ne veuille pas se connecter au serveur de msn.
Quelqu’un aurait il une idée?
D’avance merci.
9 janvier 2009 at 22:06
Hello a tous,
Je suis un jeune otodidacte du net et j ai une question a propo de ce script qui m interesse.
Qqun pourrai m expliquer comment on l install ?
J ai uploader les fichier sur mon hebergement, et rien ne s affiche. Doi-je completer ce script ? comporte-t-il des bugs ???
Merci de m apporter une réponse ou si qqun peu m indiquer une marche a suivre pour l installation et la configuration du script ce serrai génial.
Si qqun peu me donner un pti fichier tout pres a etre uploader ca me permettra de comparer voir les erreur et apprendre encore plus.
Merci a tous pour vos info precieuses… c grace aux gens comme vous qu on peu avancer… bref si qqun a une réponse pour moi je serrai super heureux de mon vendredi soir PC lol
14 janvier 2009 at 16:40
http://sahid.funraill.org/2007/12/04/recuperer-ses-contacts-msn-gmail-yahoo-avec-php/
15 janvier 2009 at 18:21
Bonjour, Ce script est vraiments très sympa, le seul problème en effet est qu’il n’a pas l’air de trouver le serveur messenger.hotmail.com:1863, quelqu’un a-t-il un serveur de substitution?
16 janvier 2009 at 13:32
salut. En effet sa marche pas chez moi non plu, j ai l mpression kil manque des codes, domage pour le manque d’explications.
2 février 2009 at 22:37
Un grand merci pour ce code que je cherchai désespérément sur internet.
25 février 2009 at 17:17
salut tout les amis.
g testé ce code dans un servuer de LWS et aussi en local il m’affiche : “Curl n’est pas install”.
je veut savoir pourquoi et si quelqu’un a le reponse il m’aide SVP;
MERCI;
27 février 2009 at 13:14
bnjr sahid
svp pourriez-vous me citer les étapes à suivre pour faire fonctionner ce paquetage.
merci d’avance.
19 mars 2009 at 12:10
Super Taf !!! Bravo !
C’est vraiment cool !!!!
Bon je n’ai pas pu testé pour Lycos car ils ont arrêter le service mail à priori (si j’ai bien compris), mais pour AOL cela à l’air de ne plus fonctionner, ils on dû changer une URL car ils ont refait leur Webmail il n’y a pas longtemps je pense.
sinon Gmail, MSN et Yahoo fonctionne très bien pour moi.
J’ai juste eue un soucis avec l’UTF8 donc je me suis seri de cette fonction :
/* Only do the slow convert if there are 8-bit characters */
/* avoid using 0xA0 (\240) in ereg ranges. RH73 does not like that */
if (! ereg(”[\200-\237]“, $string) and ! ereg(”[\241-\377]“, $string))
return $string;
// decode three byte unicode characters
$string = preg_replace(”/([\340-\357])([\200-\277])([\200-\277])/e”,”‘&#’.((ord(’\\1′)-224)*4096 + (ord(’\\2′)-128)*64 + (ord(’\\3′)-128)).’;'”,$string);
// decode two byte unicode characters
$string = preg_replace(”/([\300-\337])([\200-\277])/e”,”‘&#’.((ord(’\\1′)-192)*64+(ord(’\\2′)-128)).’;'”,$string);
return $string;
}
16 avril 2009 at 12:20
Bonjour Sahid, bonjour tout le monde!
C’est cool de nous donner ces codes! Merci!!! Pour moi, ça marche sans probleme avec gmail mais avec hotmail, j’ai un long chargement qui finis par une page blanche sans message d’erreur… c’est arrivé apparemment à plein de monde ici (si j’en crois les commentaires) mais aucune solution n’est proposé… Quelqu’un aurait-il trouvé comment remedier à ce probleme?
(testé uniquement sur gmail et hotmail -> pas de compte chez les autres)
En tout cas, grand merci à Sahid!
En espérant avoir une solution, merci! Salut!!
15 mai 2009 at 20:18
Quelqu’un s’est il interrogé sur la légalité de la chose? Je ne suis pas certain qu’il soit légal de se connecter à Gmail (par exemple) à partir d’une page qui n’appartient pas à Gmail…
Des infos?
13 juin 2009 at 12:32
Super ce script ! Merci beaucoup.