Envoyer un courriel avec perl

1. Utilisation du programme mail

On peut faire un appel à la commande mail, comme ceci :
$output = qx'mail -s "Le sujet" iu@ie.fr';

Malheureusement, le programme mail n'accepte pas une variable comme texte du message.
On peut essayer en faisant comme ceci :
$output = `mail -s "Le sujet" iu@ie.fr < "$message"`;
Bien noter l'utilisation des `` et de "" pour interpoler la variable $message. Le contenu de la variable est bien passée au shell, mais mail ne sait pas quoi en faire.

Une solution est de créer un fichier temporaire :

my $message;
print "OK.\n";
$message .= "J'ai imprimé.\n";
print "OK_2.\n";
$message .= "J'ai imprimé une deuxième fois.\n";

open (LOG, ">message.log");
print {LOG} $message;
close LOG;

$output = qx'mail -s "Log Test" combot@univ-tln.fr < message.log';
$output = qx(rm message.log);

Une autre solution est d'utiliser la commande echo, comme ceci :

#!/user/local/perl.5.8/bin/perl5.8.7

use strict;
use warnings;

my $destinataire = 'combot@univ-tln.fr';
my $sujet = 'Sujet';
my $message = "Test";

my $output = qx "echo $message | mail $destinataire -s $sujet ";

print $output;

Le sujet ne doit avoir qu'un seul mot ! Sinon le message est envoyé à chaque mot du sujet, sauf le premier.
Si on veut plusieurs mots, il faut faire comme ceci :

#!/user/local/perl.5.8/bin/perl5.8.7

use strict;
use warnings;

my $destinataire = 'combot@univ-tln.fr';
my $sujet = 'Sujet avec quatre mots';
my $message = "Test";

my $output = qx `echo $message | mail $destinataire -s "$sujet"`;

print $output;

2. Utilisation du programme sendmail

Voir un exemple ici.