Soyez le premier à donner votre avis sur cette source.
Vue 7 778 fois - Téléchargée 476 fois
<?php /*** Créer un fil RSS depuis un compte POP par g0g0 ***/ ?><rss version="2.0"> <channel> <title>Mails en attente</title> <link>http://webmail.free.fr/</link> <description>Mails en attente</description> <webMaster>g0g0pubs@free.fr</webMaster> <language>fr</language> <lastBuildDate>Thu, 18 Jan 2007 16:28:18 GMT</lastBuildDate> <ttl>30</ttl> <image> <title>www.monsiteweb.com</title> <url>http://abner.wordpress.com/files/2006/08/WindowsLiveWriter/ManualdePHP_7610/php%5B5%5D.gif</url> <link>http://webmail.free.fr/</link> <width>120</width> <height>48</height> </image> <?php define("read_each_mail",false); // Lecture ou pas des informations de l'entête // ******************************************************************************** // ******************************************************************************** // ******************************************************************************** // This is the only lines you need to modify. // Ce sont les seules lignes que vous avez à modifier. // // Il est possible de mettre 1 seul compte comme 30... pas de différence // You can type as well as 1 account as well as 30, no difference // lire_mails("pop.magic.fr","moncompte","monpassword","moncompte@magic.fr"); lire_mails("pop.free.fr","moncompte","monpassword","moncompte@free.fr"); lire_mails("pop.orange.fr","moncompte","monpassword","moncompte@orange.fr"); // ******************************************************************************** // ******************************************************************************** // ******************************************************************************** // *** Ecrire un buffer dans une socket function s_write($socket,$buff) { if(socket_write($socket,$buff)==FALSE) return(false); // *** En principe il faudrait tester le nombre d'octets envoyés return(true); } // *** Lire une ligne depuis une socket function s_read($socket) { $buff=""; $c=''; while(ord($c)!=10) { socket_recv($socket,$c,1,0); $buff.=$c; } // *** suppression des retours chariots $buff=preg_replace("/(\r|\n)/","",$buff); return($buff); } function lire_mails($pop,$user,$pass,$email) { // *** Création de la socket $address = gethostbyname($pop); $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if ($socket < 0) { die("socket_create() a échoué : raison : " . socket_strerror ($socket) . "\n"); } // *** Connexion de la socket $result=socket_connect($socket,$address,110); if($result<0) die("Impossible de connecter la socket !"); $mails=array(); $ok=false; // *** Lecture du message d'accueil $rep=s_read($socket); if(substr($rep,0,3)=='+OK') { // *** Envoi du login if(s_write($socket,"USER $user\r\n")) { // *** Lecture du +OK $rep=s_read($socket); if(substr($rep,0,3)=='+OK') { // *** Envoi du pass if(s_write($socket,"PASS $pass\r\n")) { // *** Lecture du +OK $rep=s_read($socket); if(substr($rep,0,3)=='+OK') { $ok=true; } } } } } if($ok) { // *** Demande la liste des mails s_write($socket,"LIST\r\n"); while($rep=s_read($socket)) { if((substr($rep,0,1)=='.')&&(strlen($rep<=3))) break; if(substr($rep,0,3)!='+OK') { $i=strpos($rep,' '); if($i>0) { $idx=substr($rep,0,$i)+0; $mails[$idx]=array(); } } } // *** Lecture de chaque entête ??? if(read_each_mail) { $line=1; foreach($mails as $key=>$value) { // *** Lire l'entête de chaque mail s_write($socket,"TOP $key 0\r\n"); $buff=''; while($rep=s_read($socket)) { if((substr($rep,0,1)=='.')&&(strlen($rep<=3))) break; $buff=$rep; $i=strpos($buff,":"); if($i>0) { $lkey=substr($buff,0,$i); $buff=substr($buff,$i+1); $mails[$key][$lkey]=$buff; } $buff=''; } $titre=$mails[$key]['From']; $titre.=': '.$mails[$key]['Subject']; $date=$mail[$key]['Date']; // *** Créer le XML $url="http://webmail.free.fr"; print "<item>"; print "<guid>$url</guid>"; print "<title>".htmlentities($titre)."</title>"; print "<link>$url</link>"; print "<pubDate>$date</pubDate>"; print "</item>"; $line++; } } } s_write($socket,"QUIT\r\n"); socket_close($socket); // *** Créer le XML if(!read_each_mail) { $url="http://webmail.free.fr"; if($ok) { $count=count($mails); if($count==0) $titre="$email: aucun email"; else $titre="$email: $count email(s)"; } else $titre="$email: erreur de lecture"; $date=date("Y-m-d H:i:s"); print "<item>"; print "<guid>$url</guid>"; print "<title>".htmlentities($titre)."</title>"; print "<link>$url</link>"; print "<pubDate>$date</pubDate>"; print "</item>"; } return(''); } ?> </channel> </rss>
28 févr. 2010 à 16:23
4 févr. 2009 à 15:46
3 janv. 2008 à 22:52
31 janv. 2007 à 00:56
Il faut en effet que l'hébergeur ait le module sockets activé. Je n'ai pas testé sur Free mais compte tenu du fait que Free bloque le SMTP (l'envoi de mails) et que l'on peut facilement faire un SMTP avec les sockets, il parait très probable que les sockets ne soient pas activés chez eux. A vérifier avec un phpinfo().
Ce source est surtout intéressant pour le principe je pense car concrétement l'intérêt est relativement limité.
31 janv. 2007 à 00:43
je n'ai pas de firewall et ça me retourne permission refusée ...
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.