Perl - 傳送郵件



使用 sendmail 實用程式

傳送純文字郵件

如果您在 Linux/Unix 機器上工作,您可以簡單地在 Perl 程式中使用 **sendmail** 實用程式來發送電子郵件。這是一個可以將電子郵件傳送到給定郵箱 ID 的示例指令碼。只需確保 sendmail 實用程式的給定路徑正確即可。這在您的 Linux/Unix 機器上可能有所不同。

#!/usr/bin/perl
 
$to = 'abcd@gmail.com';
$from = 'webmaster@yourdomain.com';
$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";

實際上,上面的指令碼是一個客戶端電子郵件指令碼,它將起草電子郵件並提交到在您的 Linux/Unix 機器上本地執行的伺服器。此指令碼不負責將電子郵件傳送到實際目的地。因此,您必須確保電子郵件伺服器已正確配置並在您的機器上執行,才能將電子郵件傳送到給定的郵箱 ID。

傳送 HTML 郵件

如果您想使用 sendmail 傳送 HTML 格式的電子郵件,則只需在電子郵件的標題部分新增 **Content-type: text/html\n**,如下所示:

#!/usr/bin/perl
 
$to = 'abcd@gmail.com';
$from = 'webmaster@yourdomain.com';
$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";

使用 MIME::Lite 模組

如果您在 Windows 機器上工作,則無法訪問 sendmail 實用程式。但是,您可以使用 MIME::Lite perl 模組編寫您自己的電子郵件客戶端作為替代方案。您可以從此處下載此模組 MIME-Lite-3.01.tar.gz 並將其安裝在您的 Windows 或 Linux/Unix 機器上。要安裝它,請按照以下簡單步驟操作:

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

就是這樣,您的機器上將安裝 MIME::Lite 模組。現在,您可以使用下面解釋的簡單指令碼傳送電子郵件了。

傳送純文字郵件

現在,以下是一個指令碼,它將負責將電子郵件傳送到給定的郵箱 ID:

#!/usr/bin/perl
use MIME::Lite;
 
$to = 'abcd@gmail.com';
$cc = 'efgh@mail.com';
$from = 'webmaster@yourdomain.com';
$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";

傳送 HTML 郵件

如果您想使用 sendmail 傳送 HTML 格式的電子郵件,則只需在電子郵件的標題部分新增 **Content-type: text/html\n**。以下是負責傳送 HTML 格式電子郵件的指令碼:

#!/usr/bin/perl
use MIME::Lite;
 
$to = 'abcd@gmail.com';
$cc = 'efgh@mail.com';
$from = 'webmaster@yourdomain.com';
$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";

傳送附件

如果您想傳送附件,則以下指令碼可以滿足您的需求:

#!/usr/bin/perl
use MIME::Lite;
 
$to = 'abcd@gmail.com';
$cc = 'efgh@mail.com';
$from = 'webmaster@yourdomain.com';
$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";

您可以使用 attach() 方法在電子郵件中附加任意數量的檔案。

使用 SMTP 伺服器

如果您的機器沒有執行電子郵件伺服器,則可以使用遠端位置的任何其他可用的電子郵件伺服器。但是,要使用任何其他電子郵件伺服器,您需要有一個 ID、其密碼、URL 等。一旦您擁有所有必需的資訊,只需在 **send()** 方法中提供這些資訊,如下所示:

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

您可以聯絡您的電子郵件伺服器管理員以獲取上述資訊,如果尚未提供使用者 ID 和密碼,則您的管理員可以在幾分鐘內建立它。

廣告