編程學習網 > 編程教程 > Perl 教程
2016
10-19

Perl 發送郵件

清華大佬耗費三個月吐血整理的幾百G的資源,免費分享!....>>>

Perl 發送郵件

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

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

#!/usr/bin/perl

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

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 "郵件發送成功\n";

執行以上程序,輸出結果為:

郵件發送成功

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

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

發送 HTML 格式郵件

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

#!/usr/bin/perl
 
# 接收郵箱,這里我設置為我的 QQ 郵箱,你需要修改它為你自己的郵箱
$to = '429240967@qq.com';
#發送者郵箱
$from = 'test@phpxs.com';
#標題
$subject = '菜鳥教程 Perl 發送郵件測試';
$message = '<h1>這是一封使用 Perl 發送的郵件<h1><p>你好,我來自菜鳥教程,地址是:http://www.wangchenghua.com。</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 "郵件發送成功\n";

執行成功后,查看郵件內容,如下所示:


使用 MIME::Lite 模塊

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

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@phpxs.com, test2@phpxs.com';

#發送者郵箱
$from = 'test@phpxs.com';
#標題
$subject = '菜鳥教程 Perl 發送郵件測試';
$message = '這是一封使用 Perl 發送的郵件,使用了 MIME::Lite 模塊。';

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

執行成功后,查看郵件內容,如下所示:

發送 HTML 格式郵件

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

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

#發送者郵箱
$from = 'test@phpxs.com';
#標題
$subject = '菜鳥教程 Perl 發送郵件測試';
$message = '<h1>這是一封使用 Perl 發送的郵件<h1><p>使用了 MIME::Lite 模塊。</p><p>來自菜鳥教程,地址是:http://www.wangchenghua.com。</p>';

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

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

執行成功后,查看郵件內容,如下所示:

發送帶有附件的郵件

發送帶有附件的郵件實例如下:

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

#發送者郵箱
$from = 'test@phpxs.com';
#標題
$subject = '菜鳥教程 Perl 發送郵件測試';
$message = '這是一封使用 Perl 發送的郵件,使用了 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        => './runoob.txt',   # 當前目錄下
             Filename    => 'runoob.txt',
             Disposition => 'attachment'
            );
$msg->send;
print "郵件發送成功\n";

執行成功后,查看郵件內容,如下所示:

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

掃碼二維碼 獲取免費視頻學習資料

編程學習