
- Perl 基礎
- Perl - 首頁
- Perl - 簡介
- Perl - 環境
- Perl - 語法概述
- Perl - 資料型別
- Perl - 變數
- Perl - 標量
- Perl - 陣列
- Perl - 雜湊表
- Perl - IF...ELSE
- Perl - 迴圈
- Perl - 運算子
- Perl - 日期和時間
- Perl - 子程式
- Perl - 引用
- Perl - 格式
- Perl - 檔案 I/O
- Perl - 目錄
- Perl - 錯誤處理
- Perl - 特殊變數
- Perl - 編碼規範
- Perl - 正則表示式
- Perl - 傳送郵件
- Perl 高階
- Perl - 套接字程式設計
- Perl - 面向物件
- Perl - 資料庫訪問
- Perl - CGI 程式設計
- Perl - 包和模組
- Perl - 程序管理
- Perl - 嵌入式文件
- Perl - 函式引用
- Perl 有用資源
- Perl - 問答
- Perl - 快速指南
- Perl - 有用資源
- Perl - 討論
Perl - 傳送郵件
使用 sendmail 實用程式
傳送純文字郵件
如果您在 Linux/Unix 機器上工作,您可以簡單地在 Perl 程式中使用 **sendmail** 實用程式來發送電子郵件。這是一個可以將電子郵件傳送到給定郵箱 ID 的示例指令碼。只需確保 sendmail 實用程式的給定路徑正確即可。這在您的 Linux/Unix 機器上可能有所不同。
#!/usr/bin/perl $to = 'abcd@gmail.com'; $from = 'webmaster@yourdomain.com'; $subject = 'Test Email'; $message = 'This is test email sent by Perl Script'; open(MAIL, "|/usr/sbin/sendmail -t"); # Email Header print MAIL "To: $to\n"; print MAIL "From: $from\n"; print MAIL "Subject: $subject\n\n"; # Email Body print MAIL $message; close(MAIL); print "Email Sent Successfully\n";
實際上,上面的指令碼是一個客戶端電子郵件指令碼,它將起草電子郵件並提交到在您的 Linux/Unix 機器上本地執行的伺服器。此指令碼不負責將電子郵件傳送到實際目的地。因此,您必須確保電子郵件伺服器已正確配置並在您的機器上執行,才能將電子郵件傳送到給定的郵箱 ID。
傳送 HTML 郵件
如果您想使用 sendmail 傳送 HTML 格式的電子郵件,則只需在電子郵件的標題部分新增 **Content-type: text/html\n**,如下所示:
#!/usr/bin/perl $to = 'abcd@gmail.com'; $from = 'webmaster@yourdomain.com'; $subject = 'Test Email'; $message = '<h1>This is test email sent by Perl Script</h1>'; open(MAIL, "|/usr/sbin/sendmail -t"); # Email Header print MAIL "To: $to\n"; print MAIL "From: $from\n"; print MAIL "Subject: $subject\n\n"; print MAIL "Content-type: text/html\n"; # Email Body print MAIL $message; close(MAIL); print "Email Sent Successfully\n";
使用 MIME::Lite 模組
如果您在 Windows 機器上工作,則無法訪問 sendmail 實用程式。但是,您可以使用 MIME::Lite perl 模組編寫您自己的電子郵件客戶端作為替代方案。您可以從此處下載此模組 MIME-Lite-3.01.tar.gz 並將其安裝在您的 Windows 或 Linux/Unix 機器上。要安裝它,請按照以下簡單步驟操作:
$tar xvfz MIME-Lite-3.01.tar.gz $cd MIME-Lite-3.01 $perl Makefile.PL $make $make install
就是這樣,您的機器上將安裝 MIME::Lite 模組。現在,您可以使用下面解釋的簡單指令碼傳送電子郵件了。
傳送純文字郵件
現在,以下是一個指令碼,它將負責將電子郵件傳送到給定的郵箱 ID:
#!/usr/bin/perl use MIME::Lite; $to = 'abcd@gmail.com'; $cc = 'efgh@mail.com'; $from = 'webmaster@yourdomain.com'; $subject = 'Test Email'; $message = 'This is test email sent by Perl Script'; $msg = MIME::Lite->new( From => $from, To => $to, Cc => $cc, Subject => $subject, Data => $message ); $msg->send; print "Email Sent Successfully\n";
傳送 HTML 郵件
如果您想使用 sendmail 傳送 HTML 格式的電子郵件,則只需在電子郵件的標題部分新增 **Content-type: text/html\n**。以下是負責傳送 HTML 格式電子郵件的指令碼:
#!/usr/bin/perl use MIME::Lite; $to = 'abcd@gmail.com'; $cc = 'efgh@mail.com'; $from = 'webmaster@yourdomain.com'; $subject = 'Test Email'; $message = '<h1>This is test email sent by Perl Script</h1>'; $msg = MIME::Lite->new( From => $from, To => $to, Cc => $cc, Subject => $subject, Data => $message ); $msg->attr("content-type" => "text/html"); $msg->send; print "Email Sent Successfully\n";
傳送附件
如果您想傳送附件,則以下指令碼可以滿足您的需求:
#!/usr/bin/perl use MIME::Lite; $to = 'abcd@gmail.com'; $cc = 'efgh@mail.com'; $from = 'webmaster@yourdomain.com'; $subject = 'Test Email'; $message = 'This is test email sent by Perl Script'; $msg = MIME::Lite->new( From => $from, To => $to, Cc => $cc, Subject => $subject, Type => 'multipart/mixed' ); # Add your text message. $msg->attach(Type => 'text', Data => $message ); # Specify your file as attachement. $msg->attach(Type => 'image/gif', Path => '/tmp/logo.gif', Filename => 'logo.gif', Disposition => 'attachment' ); $msg->send; print "Email Sent Successfully\n";
您可以使用 attach() 方法在電子郵件中附加任意數量的檔案。
使用 SMTP 伺服器
如果您的機器沒有執行電子郵件伺服器,則可以使用遠端位置的任何其他可用的電子郵件伺服器。但是,要使用任何其他電子郵件伺服器,您需要有一個 ID、其密碼、URL 等。一旦您擁有所有必需的資訊,只需在 **send()** 方法中提供這些資訊,如下所示:
$msg->send('smtp', "smtp.myisp.net", AuthUser=>"id", AuthPass=>"password" );
您可以聯絡您的電子郵件伺服器管理員以獲取上述資訊,如果尚未提供使用者 ID 和密碼,則您的管理員可以在幾分鐘內建立它。