Accueil ⇒ Informatique ⇒ Langage Perl ⇒ Envoi d'un mail avec Net::SMTP

Envoi d'un mail avec Net::SMTP

Introduction

Cet article décrit l'utilisation du module Perl Net::SMTP et l'illustre par un code d'exemple qui envoie les informations réseau d'un poste par mail à un administrateur potentiel.

Méthodes essentielles

Création de l'objet

L'utilisation du module est assez aisée : on commence par créer un objet de type Net::SMTP en passant le nom du serveur en argument du consitructeur :

my $smtp = Net::SMTP->new("smtp.fai.org");

Renseignement des champs

Ensuite, on précise un à un les champs du mail en appelant les procédures associées de l'objet. On précise l'envoyeur via la fonction mail :

$smtp->mail("moi.fai.org");

Puis, le destinataire avec la procédure to :

$smtp->to("lui.autrefai.com");

Les autres méthodes sont tout aussi explicites.

Envoi du message

Une fois les champs renseignés, il reste à envoyer les données. Pour ce faire, on commence par appeler la procédure data, puis le sujet et le message (successivement) en argument de la méthode datasend avant de clôre la session d'envoi via dataend.

$smtp->data();
$smtp->datasend("Mon sujet !");
$smtp->datasend("Un message quelconque.");
$smtp->dataend();

Clôture de l'envoi

Une fois toutes les données envoyées, il ne faut pas oublier de libérer l'objet via la fonction quit :

$smtp->quit;

On pourrait détailler les autres fonctionnalités du modules, mais on s'en tiendra ici à l'essentiel.

Source d'exemple

Voici un script illustrant les notions abordées :

#!/usr/bin/perl -w
 
use Net::SMTP;
use strict;
 
my $SERV = "smtp.global.com";
my $FROM = "address\@global.com";
my $DEST = "destina\@global.com";
 
my $subject = "";
my $message = "";
 
print "[ipSent] Creation du message...\n";
 
$subject .= "subject: ifconfig pour ".`hostname`."\n";
$message .= "A ".localtime()." sur ".`hostname`."\n";
$message .= "\n";
$message .= `/sbin/ifconfig -a`;
 
print "[ipSent] Envoi du message...\n";
 
my $smtp = Net::SMTP->new("$SERV");
 
$smtp->mail("$FROM");
$smtp->to("$DEST");
$smtp->data();
$smtp->datasend($subject);
$smtp->datasend($message);
$smtp->dataend();
$smtp->quit;
 
print "[ipSent] Message envoye.\n";
exit 0;

Conclusion

Au cours de ce bref article, nous avons vu les procédures essentielles qui permettent d'envoyer simplement un mail à l'aide du module Perl correspondant.