Perl - Envío de correo electrónico

Uso de la utilidad sendmail

Envío de un mensaje sencillo

Si está trabajando en una máquina Linux / Unix, simplemente puede usar sendmailutilidad dentro de su programa Perl para enviar correo electrónico. Aquí hay un script de muestra que puede enviar un correo electrónico a un ID de correo electrónico determinado. Solo asegúrese de que la ruta proporcionada para la utilidad sendmail sea correcta. Esto puede ser diferente para su máquina 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 realidad, el script anterior es un script de correo electrónico del cliente, que redactará el correo electrónico y lo enviará al servidor que se ejecuta localmente en su máquina Linux / Unix. Este script no será responsable de enviar correos electrónicos al destino real. Por lo tanto, debe asegurarse de que el servidor de correo electrónico esté configurado correctamente y funcionando en su máquina para enviar correos electrónicos a la ID de correo electrónico proporcionada.

Envío de un mensaje HTML

Si desea enviar un correo electrónico con formato HTML mediante sendmail, simplemente debe agregar Content-type: text/html\n en la parte del encabezado del correo electrónico de la siguiente manera:

#!/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";

Usando el módulo MIME :: Lite

Si está trabajando en una máquina con Windows, entonces no tendrá acceso a la utilidad sendmail. Pero tiene una alternativa para escribir su propio cliente de correo electrónico usando el módulo perl MIME: Lite. Puede descargar este módulo desde MIME-Lite-3.01.tar.gz e instalarlo en su máquina Windows o Linux / Unix. Para instalarlo, siga los sencillos pasos:

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

Eso es todo y tendrá el módulo MIME :: Lite instalado en su máquina. Ahora está listo para enviar su correo electrónico con scripts simples que se explican a continuación.

Envío de un mensaje sencillo

A continuación, se muestra un script que se encargará de enviar un correo electrónico al ID de correo electrónico proporcionado:

#!/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";

Envío de un mensaje HTML

Si desea enviar un correo electrónico con formato HTML mediante sendmail, simplemente debe agregar Content-type: text/html\nen la parte del encabezado del correo electrónico. A continuación se muestra el script, que se encargará de enviar correos electrónicos con formato 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";

Envío de un archivo adjunto

Si desea enviar un archivo adjunto, el siguiente script sirve para este propósito:

#!/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";

Puede adjuntar tantos archivos como desee en su correo electrónico usando el método attach ().

Usando el servidor SMTP

Si su máquina no está ejecutando un servidor de correo electrónico, puede utilizar cualquier otro servidor de correo electrónico disponible en la ubicación remota. Pero para usar cualquier otro servidor de correo electrónico, necesitará tener una identificación, su contraseña, URL, etc. Una vez que tenga toda la información requerida, simplemente debe proporcionar esa información ensend() método de la siguiente manera -

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

Puede ponerse en contacto con el administrador de su servidor de correo electrónico para obtener la información utilizada anteriormente y, si una identificación de usuario y una contraseña no están disponibles, su administrador puede crearlas en minutos.