Perl - wysyłanie wiadomości e-mail

Korzystanie z narzędzia sendmail

Wysyłanie zwykłej wiadomości

Jeśli pracujesz na komputerze z systemem Linux / Unix, możesz po prostu użyć sendmailnarzędzie w programie Perl do wysyłania wiadomości e-mail. Oto przykładowy skrypt, który może wysłać wiadomość e-mail na podany identyfikator e-mail. Upewnij się tylko, że podana ścieżka do narzędzia sendmail jest poprawna. To może być inne dla twojego komputera z systemem 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";

W rzeczywistości powyższy skrypt jest skryptem poczty e-mail klienta, który sporządzi szkic wiadomości e-mail i prześle ją do serwera działającego lokalnie na komputerze z systemem Linux / Unix. Ten skrypt nie będzie odpowiedzialny za wysyłanie wiadomości e-mail do rzeczywistego miejsca docelowego. Musisz więc upewnić się, że serwer e-mail jest poprawnie skonfigurowany i działa na twoim komputerze, aby wysłać wiadomość e-mail na podany identyfikator e-mail.

Wysyłanie wiadomości HTML

Jeśli chcesz wysłać wiadomość e-mail w formacie HTML za pomocą sendmaila, wystarczy dodać Content-type: text/html\n w części nagłówkowej wiadomości e-mail w następujący sposób -

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

Korzystanie z modułu MIME :: Lite

Jeśli pracujesz na komputerze z systemem Windows, nie będziesz mieć dostępu do narzędzia sendmail. Ale masz alternatywę, aby napisać własnego klienta poczty e-mail za pomocą modułu MIME: Lite perl. Możesz pobrać ten moduł z MIME-Lite-3.01.tar.gz i zainstalować go na swoim komputerze z systemem Windows lub Linux / Unix. Aby go zainstalować, wykonaj proste czynności -

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

To wszystko i będziesz mieć zainstalowany moduł MIME :: Lite na swoim komputerze. Teraz możesz wysłać wiadomość e-mail z prostymi skryptami opisanymi poniżej.

Wysyłanie zwykłej wiadomości

Teraz poniżej znajduje się skrypt, który zajmie się wysłaniem wiadomości e-mail na podany identyfikator e-mail -

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

Wysyłanie wiadomości HTML

Jeśli chcesz wysłać wiadomość e-mail w formacie HTML za pomocą sendmaila, wystarczy dodać Content-type: text/html\nw nagłówku wiadomości e-mail. Poniżej znajduje się skrypt, który zajmie się wysyłaniem wiadomości e-mail w formacie 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";

Wysyłanie załącznika

Jeśli chcesz wysłać załącznik, służy do tego następujący skrypt -

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

Możesz załączyć dowolną liczbę plików do wiadomości e-mail za pomocą metody attach ().

Korzystanie z serwera SMTP

Jeśli na Twoim komputerze nie ma serwera poczty elektronicznej, możesz użyć dowolnego innego serwera poczty e-mail dostępnego w lokalizacji zdalnej. Ale aby użyć dowolnego innego serwera poczty e-mail, będziesz musiał mieć identyfikator, jego hasło, adres URL itp. Gdy masz wszystkie wymagane informacje, po prostu musisz podać te informacje wsend() metoda w następujący sposób -

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

Możesz skontaktować się z administratorem serwera e-mail, aby uzyskać powyższe informacje, a jeśli identyfikator użytkownika i hasło nie są jeszcze dostępne, administrator może je utworzyć w ciągu kilku minut.