Perl 發(fā)送郵件

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

以下是一個(gè)簡(jiǎn)單的腳本實(shí)例用于發(fā)送郵件:

#!/usr/bin/perl

# 接收郵箱,這里我設(shè)置為我的 QQ 郵箱,你需要修改它為你自己的郵箱
$to = '429240967@qq.com';
#發(fā)送者郵箱
$from = 'test@w3cschool.cn';
#標(biāo)題
$subject = 'W3Cschool教程 Perl 發(fā)送郵件測(cè)試';
$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í)行以上程序,輸出結(jié)果為:

郵件發(fā)送成功

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

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


發(fā)送 HTML 格式郵件

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

#!/usr/bin/perl
 
# 接收郵箱,這里我設(shè)置為我的 QQ 郵箱,你需要修改它為你自己的郵箱
$to = '429240967@qq.com';
#發(fā)送者郵箱
$from = 'test@w3cschool.cn';
#標(biāo)題
$subject = 'W3Cschool教程 Perl 發(fā)送郵件測(cè)試';
$message = '<h1>這是一封使用 Perl 發(fā)送的郵件<h1><p>你好,我來(lái)自W3Cschool教程,地址是:http://m.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),沒(méi)有 sendmail 工具。這時(shí)你就可以使用 perl 的 MIME:Lite 模塊作為郵件客戶端來(lái)發(fā)送郵件。

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

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

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

安裝成功后,我們來(lái)演示一個(gè)實(shí)例:

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

#發(fā)送者郵箱
$from = 'test@w3cschool.cn';
#標(biāo)題
$subject = 'W3Cschool教程 Perl 發(fā)送郵件測(cè)試';
$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 來(lái)發(fā)送 HTML 格式的郵件,實(shí)例如下:

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

#發(fā)送者郵箱
$from = 'test@w3cschool.cn';
#標(biāo)題
$subject = 'W3Cschool教程 Perl 發(fā)送郵件測(cè)試';
$message = '<h1>這是一封使用 Perl 發(fā)送的郵件<h1><p>使用了 MIME::Lite 模塊。</p><p>來(lái)自W3Cschool教程,地址是:http://m.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ā)送帶有附件的郵件實(shí)例如下:

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

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

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


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



你可以通過(guò)使用多個(gè) $msg->attach 來(lái)添加多個(gè)附件。