Perl - Envoi d'e-mails

Utilisation de l'utilitaire sendmail

Envoi d'un message clair

Si vous travaillez sur une machine Linux / Unix, vous pouvez simplement utiliser sendmailutilitaire dans votre programme Perl pour envoyer des e-mails. Voici un exemple de script permettant d'envoyer un e-mail à un ID e-mail donné. Assurez-vous simplement que le chemin indiqué pour l'utilitaire sendmail est correct. Cela peut être différent pour votre machine Linux / Unix.

#!/usr/bin/perl
 
$to = '[email protected]';
$from = '[email protected]';
$subject = 'Test Email';
$message = 'This is test email sent by Perl Script';
 
open(MAIL, "|/usr/sbin/sendmail -t");
 
# Email Header
print MAIL "To: $to\n";
print MAIL "From: $from\n";
print MAIL "Subject: $subject\n\n";
# Email Body
print MAIL $message;

close(MAIL);
print "Email Sent Successfully\n";

En fait, le script ci-dessus est un script de courrier électronique client, qui rédigera le courrier électronique et le soumettra au serveur fonctionnant localement sur votre machine Linux / Unix. Ce script ne sera pas responsable de l'envoi des e-mails à la destination réelle. Vous devez donc vous assurer que le serveur de messagerie est correctement configuré et fonctionne sur votre machine pour envoyer un courrier électronique à l'ID de messagerie donné.

Envoi d'un message HTML

Si vous souhaitez envoyer un e-mail au format HTML à l'aide de sendmail, il vous suffit d'ajouter Content-type: text/html\n dans la partie en-tête de l'e-mail comme suit -

#!/usr/bin/perl
 
$to = '[email protected]';
$from = '[email protected]';
$subject = 'Test Email';
$message = '<h1>This is test email sent by Perl Script</h1>';
 
open(MAIL, "|/usr/sbin/sendmail -t");
 
# Email Header
print MAIL "To: $to\n";
print MAIL "From: $from\n";
print MAIL "Subject: $subject\n\n";
print MAIL "Content-type: text/html\n";
# Email Body
print MAIL $message;

close(MAIL);
print "Email Sent Successfully\n";

Utilisation du module MIME :: Lite

Si vous travaillez sur une machine Windows, vous n'aurez pas accès à l'utilitaire sendmail. Mais vous avez une alternative pour écrire votre propre client de messagerie en utilisant le module perl MIME: Lite. Vous pouvez télécharger ce module à partir de MIME-Lite-3.01.tar.gz et l'installer sur votre machine Windows ou Linux / Unix. Pour l'installer, suivez les étapes simples -

$tar xvfz MIME-Lite-3.01.tar.gz
$cd MIME-Lite-3.01
$perl Makefile.PL
$make
$make install

Voilà et vous aurez le module MIME :: Lite installé sur votre machine. Vous êtes maintenant prêt à envoyer votre e-mail avec des scripts simples expliqués ci-dessous.

Envoi d'un message clair

Voici maintenant un script qui se chargera d'envoyer un e-mail à l'ID d'e-mail donné -

#!/usr/bin/perl
use MIME::Lite;
 
$to = '[email protected]';
$cc = '[email protected]';
$from = '[email protected]';
$subject = 'Test Email';
$message = 'This is test email sent by Perl Script';

$msg = MIME::Lite->new(
                 From     => $from,
                 To       => $to,
                 Cc       => $cc,
                 Subject  => $subject,
                 Data     => $message
                 );
                 
$msg->send;
print "Email Sent Successfully\n";

Envoi d'un message HTML

Si vous souhaitez envoyer un e-mail au format HTML à l'aide de sendmail, il vous suffit d'ajouter Content-type: text/html\ndans la partie d'en-tête de l'e-mail. Voici le script, qui se chargera d'envoyer un e-mail au format HTML -

#!/usr/bin/perl
use MIME::Lite;
 
$to = '[email protected]';
$cc = '[email protected]';
$from = '[email protected]';
$subject = 'Test Email';
$message = '<h1>This is test email sent by Perl Script</h1>';

$msg = MIME::Lite->new(
                 From     => $from,
                 To       => $to,
                 Cc       => $cc,
                 Subject  => $subject,
                 Data     => $message
                 );
                 
$msg->attr("content-type" => "text/html");         
$msg->send;
print "Email Sent Successfully\n";

Envoi d'une pièce jointe

Si vous souhaitez envoyer une pièce jointe, le script suivant sert le but -

#!/usr/bin/perl
use MIME::Lite;
 
$to = '[email protected]';
$cc = '[email protected]';
$from = '[email protected]';
$subject = 'Test Email';
$message = 'This is test email sent by Perl Script';

$msg = MIME::Lite->new(
                 From     => $from,
                 To       => $to,
                 Cc       => $cc,
                 Subject  => $subject,
                 Type     => 'multipart/mixed'
                 );
                 
# Add your text message.
$msg->attach(Type         => 'text',
             Data         => $message
             );
            
# Specify your file as attachement.
$msg->attach(Type         => 'image/gif',
             Path         => '/tmp/logo.gif',
             Filename     => 'logo.gif',
             Disposition  => 'attachment'
            );       
$msg->send;
print "Email Sent Successfully\n";

Vous pouvez joindre autant de fichiers que vous le souhaitez dans votre e-mail en utilisant la méthode attach ().

Utilisation du serveur SMTP

Si votre machine n'exécute pas de serveur de messagerie, vous pouvez utiliser tout autre serveur de messagerie disponible sur le site distant. Mais pour utiliser tout autre serveur de messagerie, vous devrez avoir un identifiant, son mot de passe, son URL, etc. Une fois que vous avez toutes les informations requises, il vous suffit de fournir ces informations danssend() méthode comme suit -

$msg->send('smtp', "smtp.myisp.net", AuthUser=>"id", AuthPass=>"password" );

Vous pouvez contacter l'administrateur de votre serveur de messagerie pour avoir les informations utilisées ci-dessus et si un identifiant d'utilisateur et un mot de passe ne sont pas déjà disponibles, votre administrateur peut les créer en quelques minutes.