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.