Trouver une ressource (Nouvelle version du moteur, plus rapide & pertinent, essayez le !)
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
POP2RSS: CREATION D'UN FIL RSS DEPUIS UNE LISTE DE MAILS POP
Information sur la source
Description
Cela peut servir à pouvoir consulter de temps en temps ses emails en attente d'un simple clic dans le navigateur.
Source
- <?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>
<?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>
Conclusion
Fonctionnement global:
- Avec une socket: connexion au serveur de mail POP port 110, envoi des commandes USER, PASS, LIST, QUIT
- Création en même temps de la page XML du flux RSS
Sources de la même categorie
Commentaires
Discussions en rapport avec ce code source
|
Téléchargements
Logiciels à télécharger sur le même thème :
|