Maintenant que vous avez fait connaissance avec le module
Net::SMTP, nous allons voir ensemble comment implémenter en Perl les 5 étapes décrites un plus haut.
Pour rappel, voici les 5 étapes que nous allons implémenter au cours de ce chapitre :
- se connecter au serveur SMTP ;
- indiquer l'adresse électronique de l'expéditeur ;
- indiquer l'adresse électronique du destinataire ;
- indiquer le contenu du message ;
- quitter proprement le serveur.
C'est parti !
Étape 1 : se connecter au serveur SMTP
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 ce premier exemple, nous allons nous connecter au serveur SMTP de Wanadoo. Nous allons donc utiliser ici un seul paramètre.
Code : Perl | #!usr/bin/perl -w
use strict;
use Net::SMTP; #Indique que nous allons utiliser ce module au cours de notre programme.
#Étape 1
my $smtp = Net::SMTP->new('smtp.wanadoo.fr') or die 'Impossible de se connecter au serveur : ' . $!;
|
Tout comme dans la partie 1 de ce tutoriel, le
or die
permet de gérer les éventuelles exceptions renvoyées par notre programme. La variable
$!
quant à elle, 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 nous les paramètres de débug et de limitation de temps sont présents.
Code : Perl | #!usr/bin/perl -w
use strict;
use Net::SMTP;
#Étape 1
my $smtp = Net::SMTP->new('smtp.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. Nous pouvons ainsi 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 : indiquer l'adresse électronique de l'expéditeur
Si une fois de plus vous avez correctement retenu ce qui était écrit plus haut, vous n'aurez pas de difficulté à deviner que cette étape s'effectue grâce à la méthode
mail()
. Vous avez juste à indiquer votre adresse e-mail comme paramètre de la fonction.
Code : Perl | #Étape 2
$smtp->mail('*****@wanadoo.fr') or die 'Un problème est survenu avec la méthode mail() !';
|
Étape 3 : indiquer l'adresse électronique du destinataire
Cette étape n'a une nouvelle fois rien de compliquée, et se calque parfaitement sur l'étape précédente, sauf que cette fois, c'est la méthode
to()
qu'il faut utiliser. Une nouvelle fois, vous avez juste à indiquer l'adresse e-mail comme paramètre de la fonction.
Code : Perl | #Étape 3
$smtp->to('*****@hotmail.fr') or die 'Un problème est survenu avec la méthode to() !';
|
Comme je le disais lors de la présentation des différentes fonctions, il est possible d'indiquer plusieurs destinataires. Chaque adresse représente alors un paramètre.
Code : Perl | #Étape 3
$smtp->to('*****@hotmail.fr', '******@yahoo.fr', '******@gmail.com') or die 'Un problème est survenu avec la méthode to() !';
|
Si vous souhaitez envoyer des copies ou des copies cachées à des destinataires à l'aide des méthodes cc()
et bcc()
, c'est à la fin de cette étape qu'il faut le faire. En ce qui concerne la syntaxe, c'est exactement la même que pour la méthode to()
!
Étape 4 : indiquer le contenu du message
C'est dans cette étape, tout se corse puisque nous n'allons pas utiliser une, mais 3 méthodes ! Chacune correspondant à une étape :
- initialiser la transmission des données ;
- transmettre les données ;
- clôturer la transmission des données.
Pour réaliser ces 3 étapes, nous allons respectivement utiliser les méthodes
data()
,
datasend()
et
dataend()
.
Pour rappel, seule la méthode datasend()
prend un paramètre, à savoir le contenu de votre message !
Voici tout de suite un exemple d'utilisation.
Code : Perl | #Étape 4
$smtp->data() or die 'Un problème est survenu avec la méthode data() !';
$smtp->datasend('J\'apprends à envoyer des mails en Perl !') or die 'Un problème est survenu avec la méthode datasend() !';
$smtp->dataend() or die 'Un problème est survenu avec la méthode dataend() !';
|
A noter que la méthode datasend()
peut s'utiliser autant de fois que l'on souhaite. Ainsi, si l'on reprend l'exemple précédent, il est tout à fait possible et correct d'écrire :
Code : Perl | #Étape 4
$smtp->data() or die 'Un problème est survenu avec la méthode data() !';
$smtp->datasend('J\'apprends à envoyer ') or die 'Un problème est survenu avec la méthode datasend() !';
$smtp->datasend('des mails en Perl !') or die 'Un problème est survenu avec la méthode datasend() !';
$smtp->dataend() or die 'Un problème est survenu avec la méthode dataend() !';
|
Étape 5 : quitter proprement le serveur
Nous voilà enfin à la dernière étape qui consiste à fermer proprement la connexion avec le serveur. Pour ce faire, c'est la méthode
quit()
qu'il faut utiliser.
Code : Perl | #Étape 5
$smtp->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 l'envoi d'un e-mail grâce au module
Net::SMTP :
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
24 | #!usr/bin/perl -w
use strict;
use Net::SMTP;
#Étape 1
my $smtp = Net::SMTP->new('smtp.wanadoo.fr') or die 'Impossible de se connecter au serveur : ' . $!;
#Étape 2
$smtp->mail('*****@wanadoo.fr') or die 'Un problème est survenu avec la méthode mail() !';
#Étape 3
$smtp->to('*****@hotmail.fr') or die 'Un problème est survenu avec la méthode to() !';
#$smtp->cc('*****@hotmail.fr') or die 'Un problème est survenu avec la méthode cc() !';
#$smtp->bcc('*****@hotmail.fr') or die 'Un problème est survenu avec la méthode bcc() !';
#Étape 4
$smtp->data() or die 'Un problème est survenu avec la méthode data() !';
$smtp->datasend('J\'apprends à envoyer des mails en Perl !') or die 'Un problème est survenu avec la méthode datasend() !';
$smtp->dataend() or die 'Un problème est survenu avec la méthode dataend() !';
#Étape 5
$smtp->quit() or die 'Un problème est survenu avec la méthode quit() !';
|