Perl - Enviando Email

Usando o utilitário sendmail

Enviando uma mensagem simples

Se você estiver trabalhando em uma máquina Linux / Unix, você pode simplesmente usar sendmailutilitário dentro do seu programa Perl para enviar e-mail. Aqui está um script de amostra que pode enviar um email para um determinado ID de email. Apenas certifique-se de que o caminho fornecido para o utilitário sendmail está correto. Isso pode ser diferente para sua 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";

Na verdade, o script acima é um script de e-mail do cliente, que redigirá o e-mail e o enviará ao servidor rodando localmente em sua máquina Linux / Unix. Este script não será responsável por enviar e-mail para o destino real. Portanto, você deve ter certeza de que o servidor de e-mail está configurado corretamente e em execução em sua máquina para enviar e-mail para a ID de e-mail fornecida.

Enviando uma mensagem HTML

Se você deseja enviar e-mail formatado em HTML usando sendmail, basta adicionar Content-type: text/html\n na parte do cabeçalho do e-mail da seguinte forma -

#!/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 o Módulo MIME :: Lite

Se você estiver trabalhando em uma máquina com Windows, não terá acesso ao utilitário sendmail. Mas você tem uma alternativa para escrever seu próprio cliente de e-mail usando o módulo MIME: Lite perl. Você pode baixar este módulo de MIME-Lite-3.01.tar.gz e instalá-lo em sua máquina Windows ou Linux / Unix. Para instalá-lo, siga as etapas simples -

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

É isso e você terá o módulo MIME :: Lite instalado em sua máquina. Agora você está pronto para enviar seu e-mail com scripts simples explicados a seguir.

Enviando uma mensagem simples

A seguir está um script que se encarregará de enviar e-mail para o ID de e-mail fornecido -

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

Enviando uma mensagem HTML

Se você deseja enviar e-mail formatado em HTML usando sendmail, basta adicionar Content-type: text/html\nna parte do cabeçalho do e-mail. A seguir está o script, que cuidará do envio de e-mail formatado em 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";

Enviando um Anexo

Se você quiser enviar um anexo, o script a seguir serve ao 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";

Você pode anexar quantos arquivos desejar em seu e-mail usando o método attach ().

Usando o servidor SMTP

Se a sua máquina não estiver executando um servidor de e-mail, você poderá usar qualquer outro servidor de e-mail disponível no local remoto. Mas para usar qualquer outro servidor de e-mail, você precisará ter um id, sua senha, URL, etc. Depois de ter todas as informações necessárias, você simplesmente precisa fornecer essas informações emsend() método da seguinte forma -

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

Você pode entrar em contato com o administrador do servidor de e-mail para obter as informações utilizadas acima e, se um ID de usuário e senha ainda não estiverem disponíveis, o administrador poderá criá-los em minutos.