Perl 發(fā)送郵件

如果你的程序在 Linux/Unix 系統(tǒng)上運行,你就可以在 Perl 中使用 sendmail 工具來發(fā)送郵件。

以下是一個簡單的腳本實例用于發(fā)送郵件:

#!/usr/bin/perl

# 接收郵箱,這里我設置為我的 QQ 郵箱,你需要修改它為你自己的郵箱
$to = '429240967@qq.com';
#發(fā)送者郵箱
$from = 'test@w3cschool.cn';
#標題
$subject = 'W3Cschool教程 Perl 發(fā)送郵件測試';
$message = '這是一封使用 Perl 發(fā)送的郵件。';

open(MAIL, "|/usr/sbin/sendmail -t");

# 郵件頭部
print MAIL "To: $to\n";
print MAIL "From: $from\n";
print MAIL "Subject: $subject\n\n";
# 郵箱信息
print MAIL $message;

close(MAIL);
print "郵件發(fā)送成功\n";

執(zhí)行以上程序,輸出結果為:

郵件發(fā)送成功

正常情況下,以上郵件會被 QQ 郵箱攔截,我么可以把它加入白名單,操作方式可以點擊:https://kf.qq.com/faq/120322fu63YV130805rYRFzu.html

加入白名單后就可以正常接收郵件了。


發(fā)送 HTML 格式郵件

我們可以在郵件頭部添加 Content-type: text/html\n 來發(fā)送 HTML 格式的郵件,實例如下:

#!/usr/bin/perl
 
# 接收郵箱,這里我設置為我的 QQ 郵箱,你需要修改它為你自己的郵箱
$to = '429240967@qq.com';
#發(fā)送者郵箱
$from = 'test@w3cschool.cn';
#標題
$subject = 'W3Cschool教程 Perl 發(fā)送郵件測試';
$message = '<h1>這是一封使用 Perl 發(fā)送的郵件<h1><p>你好,我來自W3Cschool教程,地址是:http://hgci.cn。</p>';
 
open(MAIL, "|/usr/sbin/sendmail -t");
 
# 郵件頭部
print MAIL "To: $to\n";
print MAIL "From: $from\n";
print MAIL "Subject: $subject\n";
print MAIL "Content-type: text/html\n";
# 郵箱信息
print MAIL $message;

close(MAIL);
print "郵件發(fā)送成功\n";




使用 MIME::Lite 模塊

如果你使用的是 window 系統(tǒng),沒有 sendmail 工具。這時你就可以使用 perl 的 MIME:Lite 模塊作為郵件客戶端來發(fā)送郵件。

MIME:Lite 模塊 下載地址為:MIME-Lite-3.030.tar.gz。

這里我們直接用 cpan 來安裝(需要 root 權限),不用下載:

$ cpan -i MIME::Lite
……
  /usr/bin/make install  -- OK

安裝成功后,我們來演示一個實例:

#!/usr/bin/perl
use MIME::Lite;
 
# 接收郵箱,這里我設置為我的 QQ 郵箱,你需要修改它為你自己的郵箱
$to = '429240967@qq.com';
# 抄送者,多個使用逗號隔開
# $cc = 'test1@w3cschool.cn, test2@w3cschool.cn';

#發(fā)送者郵箱
$from = 'test@w3cschool.cn';
#標題
$subject = 'W3Cschool教程 Perl 發(fā)送郵件測試';
$message = '這是一封使用 Perl 發(fā)送的郵件,使用了 MIME::Lite 模塊。';

$msg = MIME::Lite->new(
                 From     => $from,
                 To       => $to,
                 Cc       => $cc,
                 Subject  => $subject,
                 Data     => $message
                 );
                 
$msg->send;
print "郵件發(fā)送成功\n";



發(fā)送 HTML 格式郵件

我們可以在郵件頭部添加 Content-type: text/html\n 來發(fā)送 HTML 格式的郵件,實例如下:

#!/usr/bin/perl
use MIME::Lite;
 
# 接收郵箱,這里我設置為我的 QQ 郵箱,你需要修改它為你自己的郵箱
$to = '429240967@qq.com';
# 抄送者,多個使用逗號隔開
# $cc = 'test1@w3cschool.cn, test2@w3cschool.cn';

#發(fā)送者郵箱
$from = 'test@w3cschool.cn';
#標題
$subject = 'W3Cschool教程 Perl 發(fā)送郵件測試';
$message = '<h1>這是一封使用 Perl 發(fā)送的郵件<h1><p>使用了 MIME::Lite 模塊。</p><p>來自W3Cschool教程,地址是:http://hgci.cn。</p>';

$msg = MIME::Lite->new(
                 From     => $from,
                 To       => $to,
                 Cc       => $cc,
                 Subject  => $subject,
                 Data     => $message
                 );

# 添加頭部信息
$msg->attr("content-type" => "text/html");                         
$msg->send;
print "郵件發(fā)送成功\n";



發(fā)送帶有附件的郵件

發(fā)送帶有附件的郵件實例如下:

#!/usr/bin/perl
use MIME::Lite;
 
# 接收郵箱,這里我設置為我的 QQ 郵箱,你需要修改它為你自己的郵箱
$to = '429240967@qq.com';
# 抄送者,多個使用逗號隔開
# $cc = 'test1@w3cschool.cn, test2@w3cschool.cn';

#發(fā)送者郵箱
$from = 'test@w3cschool.cn';
#標題
$subject = 'W3Cschool教程 Perl 發(fā)送郵件測試';
$message = '這是一封使用 Perl 發(fā)送的郵件,使用了 MIME::Lite 模塊,包含了附件。';

$msg = MIME::Lite->new(
                 From     => $from,
                 To       => $to,
                 Cc       => $cc,
                 Subject  => $subject,
                 Type     => 'multipart/mixed'   # 附件標記
                 );


$msg->attach (
              Type => 'TEXT',
              Data => $message
);# 指定附件信息
$msg->attach(Type        => 'TEXT',
             Path        => './w3cschool.txt',   # 當前目錄下
             Filename    => 'w3cschool.txt',
             Disposition => 'attachment'
            );
$msg->send;
print "郵件發(fā)送成功\n";



你可以通過使用多個 $msg->attach 來添加多個附件。