如果你的程式在Linux/Unix 系統上執行,你就可以在Perl 中使用sendmail工具來傳送郵件。
以下是一個簡單的腳本實例用於發送郵件:
實例
#!/usr/bin/perl # 接收郵箱,這裡我設定為我的QQ 郵箱,你需要修改它為你自己的郵箱$to = ' [email protected] ' ; #發送者信箱$from = ' [email protected] ' ; #標題$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/htmln來傳送HTML 格式的郵件,實例如下:
實例
#!/usr/bin/perl # 接收郵箱,這裡我設定為我的QQ 郵箱,你需要修改它為你自己的郵箱$to = ' [email protected] ' ; #發送者信箱$from = ' [email protected] ' ; #標題$subject = '碼農教程Perl 發送郵件測試' ; $message = ' <h1>這是一封使用Perl 發送的郵件<h1><p>你好,我來自碼農教程,地址是:http:/ /www.codercto.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 = ' [email protected] ' ; # 抄送者,多個使用逗號隔開# $cc = '[email protected], [email protected]'; #發送者信箱$from = ' [email protected] ' ; #標題$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/htmln來傳送HTML 格式的郵件,實例如下:
實例
#!/usr/bin/perl use MIME::Lite ; # 接收郵箱,這裡我設定為我的QQ 郵箱,你需要修改它為你自己的郵箱$to = ' [email protected] ' ; # 抄送者,多個使用逗號隔開# $cc = '[email protected], [email protected]'; #發送者信箱$from = ' [email protected] ' ; #標題$subject = '碼農教學 Perl 傳送郵件測試' ; $message = ' <h1>這是使用Perl 傳送的郵件<h1><p>使用了MIME::Lite 模組。 </p><p>來自碼農教程,網址是:http://www.codercto.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 = ' [email protected] ' ; # 抄送者,多個使用逗號隔開# $cc = '[email protected], [email protected]'; #發送者信箱$from = ' [email protected] ' ; #標題$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 => ' ./codercto.txt ' , # 目前目錄下 Filename => ' codercto.txt ' , Disposition => ' attachment ' ) ; $msg -> send ; print "郵件發送成功n " ;執行成功後,查看郵件內容,如下所示:
你可以透過使用多個$msg->attach 來新增多個附件。