Maintenant que vous avez fait connaissance avec le module
Net::POP3, nous allons voir ensemble comment implémenter en Perl les 4 étapes décrites un plus haut.
Pour rappel, voici les 4 étapes que nous allons implémenter au cours de ce chapitre :
- se connecter au serveur POP3 ;
- s'identifier ;
- consulter / gérer ses e-mails ;
- quitter proprement le serveur.
C'est parti !
Étape 1 : se connecter au serveur POP3
La première étape consiste donc à indiquer à notre programme Perl l'adresse du serveur auquel on souhaite se connecter. Si vous vous souvenez bien, c'est la méthode
new()
qui nous le permet. Pour rappel, voici quelques paramètres que peut prendre cette fonction :
- le serveur auquel on souhaite se connecter ;
- le mode débogage ;
- durée limite pour établir la connexion.
Dans l'exemple suivant, nous allons nous connecter au serveur POP3 de Wanadoo.
Code : Perl | #!/usr/bin/perl -w
use strict;
use Net::POP3;
#Étape 1
my $pop = Net::POP3->new('pop.wanadoo.fr') or die 'Impossible de se connecter au serveur : '.$!;
|
Comme à chaque fois, le
or die
permet de gérer les éventuelles exceptions renvoyées par notre programme. La variable
$!
nous indique la source exacte du problème.
Il est possible de faire passer d'autres paramètres à la méthode
new()
comme par exemple le mode débogage ou un temps limite de connexion. Le passage de ces nouveaux paramètres se fait sous la forme d'un tableau associatif.
Voyons tout de suite un exemple dans lequel les paramètres de débug et de limitation de temps sont présents.
Code : Perl | #!/usr/bin/perl -w
use strict;
use Net::POP3;
#Étape 1
my $pop = Net::POP3->new('pop.wanadoo.fr', Debug => 1, Timeout => 10) or die 'Impossible de se connecter au serveur : '.$!;
|
Par défaut, le mode débogage est désactivé. Le mettre à 1 permet donc son activation. Ainsi, il est possible d'afficher à l'écran le détail du dialogue qui s'opère entre le serveur et votre programme.
Le temps limite de connexion se donne en seconde. Ainsi, dans mon exemple, si au bout de 10 secondes le programme n'a pas réussi à se connecter au serveur, une exception sera levée, et la variable
$!
contiendra le message "
Connexion terminée par expiration du délai d'attente".
Étape 2 : s'identifier
Il existe 2 méthodes pour ce connecter. L'une étant théoriquement plus sécurisée que l'autre. Dans notre exemple, nous allons utiliser la façon la plus basique (et donc la moins sécurisée). Nous allons donc nous identifier grâce à la fonction
login()
. Puisque cette méthode renvoie le nombre de messages présents dans la boite de réception, nous allons en profiter pour afficher l'information à l'écran.
Code : Perl | #Étape 2
my $nbmsg = $pop->login('*****@wanadoo.fr', '*****') or die 'Erreur d\'identification !';
print 'Vous avez '.$nbmsg.' messages !';
|
Vous devriez alors obtenir quelque chose comme ça à l'écran :
Code : Console | > perl pop3.pl
Vous avez 125 messages ! |
Étape 3 : consulter / gérer ses e-mails
C'est dans cette étape que vous allez pouvoir lire vos mails et pourquoi pas en supprimer certains du serveur.
Nous allons voir ici un exemple qui permet d'afficher à l'écran tous les e-mails que nous avons sur le serveur. Pour ça, nous allons dans un premier temps utiliser la méthode
list()
afin d'obtenir l'identifiant de chacun des messages. Enfin, nous utiliserons la méthode
get()
afin de récupérer le contenu du message (en-tête et corps) puis nous l'afficherons à l'écran. Pour afficher tous les messages, il conviendra de boucler sur les clefs contenues dans la table hachage renvoyée par la fonction
list()
.
Pour rappel, la fonction list()
renvoie une référence vers une table de hachage, tandis que get()
renvoie une référence à un tableau !
Code : Perl | #Étape 3
#On récupère la liste des messages
my $index = $pop->list() or die 'Impossible de lister les messages !';
#On affiche les messages
foreach my $msgnum (keys %$index) {
my $msg = $pop->get($msgnum) or die 'Impossible de récupérer le message n°'.$msgnum.' !';
print @$msg."\n\n";
}
|
Comme à chaque fois, j'essaye de rendre le code aussi clair que possible afin de ne pas rendre la syntaxe de Perl indigeste. Cependant, si vous êtes vraiment à l'aise, vous pouvez bien évidemment afficher le message directement en utilisant :
Code : Perl | print @{$pop->get($msgnum)};
|
Étape 4 : quitter proprement le serveur
Nous voilà enfin à la dernière étape qui consiste à fermer proprement la connexion avec le serveur grâce à la méthode
quit()
.
Code : Perl | #Étape 4
$pop->quit() or die 'Un problème est survenu avec la méthode quit() !';
|
Pour résumer
Voici le code complet de ce que nous avons vu ensemble sur la consultation d'un e-mail en Perl via le module
Net::POP3 :
Code : Perl 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 | #!/usr/bin/perl -w
use strict;
use Net::POP3;
#Étape 1
my $pop = Net::POP3->new('pop.wanadoo.fr') or die 'Impossible de se connecter au serveur : '.$!;
#Étape 2
my $nbmsg = $pop->login('*****@wanadoo.fr', '*****') or die 'Erreur d\'identification !';
print 'Vous avez '.$nbmsg." messages !\n\n";
#Étape 3
my $index = $pop->list() or die 'Impossible de lister les messages !';
foreach my $msgnum (keys %$index) {
my $msg = $pop->get($msgnum) or die 'Impossible de récupérer le message n°'.$msgnum.' !';
print @$msg."\n\n";
}
#Étape 4
$pop->quit() or die 'Un problème est survenu avec la méthode quit() !';
|