利用 phpmailer 透過 gmail 寄信
開發程式有時候會需要讓系統可以替你發送信件
雖說php本身已有內件的mail()函式
但是問題往往卡在需要有一個SMTP伺服器
在網路上找的一些免費SMTP多半都有限制
比方說收件者數量、每天可寄幾封等等的
會需要到程式寄送信件卻通常都超過這個限制!!
所以這邊就介紹一下怎麼利用gmail的SMTP來幫你寄
不需要自己另架SMTP伺服器!!!
然後利用網路上寫得相當不錯的phpmailer寄信程式寄
需要自己寫的程式也就更少、更方便了
而要透過gmail寄信也還是有些小限制
比方說要開啟openssl
這點通常還是要自架的server才有權限更動
以下我就介紹幾個重點:
‧怎麼打開Appache的openssl功能
‧怎麼下載phpmailer
‧怎麼設定寄信信件內容
◎怎麼打開Appache的openssl功能
首先我們需要先複製兩個檔案
請先到你安裝AppServ的地方
進到php5資料夾裡
在資料夾裡有兩個dll檔
libeay32.dll 和 ssleay32.dll
請先把它們複製
然後請到WINDOWS底下的system32資料夾
把剛剛的兩個dll檔直接貼上
再來要修改一下php.ini的設定
修改的地方在這:
php.ini是用文字文件開啟的
打開php.ini之後
有兩處需要修改
請先ctrl + F叫出搜尋視窗
並設定尋找目標為 openssl
找到之後
把前面原有的分號刪除即可
之後一樣 ctrl + F 搜尋 smtp_port
如果找不到的話把向下改向上
原本預設是25
請改成465
改完這些地方之後存檔
並且重開Apache
重開的地方在:
重開成功後
進入http://localhost/phpinfo.php
在裡面找到openssl就會發現已經顯示為enabled了
這就代表可以使用openssl了
◎去哪邊下載phpmailer?
phpmailer是一款免錢開放軟體
目前是由sourceforge提供官方下載
可以直接點選下面的網址進入
http://sourceforge.net/projects/phpmailer/files/phpmailer%20for%20php5_6/
(更正新連結:謝謝hfovg大大~ http://sourceforge.net/projects/phpmailer/files/phpmailer-ml/PHPMailer-ML_v1.8.1/PHPMailer-ML_v1.8.1_core.zip/download )
進入後會看見這一坨東西
請不要理下面那些
直接點上面綠色鈕旁邊的 View all files
打開之後
會出現一些有的沒的
把phpmailer-ml資料夾點一下打開子目錄
裡面的PHPMailer-ML_v1.8.1
最下面的zip檔就是原始碼(如圖)
下載這包就可以了
抓完之後解壓縮
解壓縮之後在以下的目錄裡面
就可以找到phpmailer主程式
請把phpmailer整個資料夾
搬到Appserv的www資料夾中吧!!
看你要放在哪個子目錄都可以
◎怎麼設定寄信信件內容
控制寄信的主要檔案是class.phpmailer.php這個檔
這裡面需要改兩個設定
在大約177行這附近
找一下就可以找到
原本的設定是這樣:
把這兩項改成:
存檔之後就可以了
那再來
我自己要寄信的程式要怎麼呼叫phpmailer呢?
他主要的功能都已經包好
所以我們只要將它的功能拿出來用即可
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPAuth = true; // turn on SMTP authentication
//這幾行是必須的
$mail->Username = "XXX@gmail.com";
$mail->Password = "*****";
//這邊是你的gmail帳號和密碼
$mail->FromName = "XXX";
// 寄件者名稱(你自己要顯示的名稱)
$webmaster_email = "XXX@gmail.com";
//回覆信件至此信箱
$email="XXX@XXX.XXX";
// 收件者信箱
$name="XXX";
// 收件者的名稱or暱稱
$mail->From = $webmaster_email;
$mail->AddAddress($email,$name);
$mail->AddReplyTo($webmaster_email,"Squall.f");
//這不用改
$mail->WordWrap = 50;
//每50行斷一次行
//$mail->AddAttachment("/XXX.rar");
// 附加檔案可以用這種語法(記得把上一行的//去掉)
$mail->IsHTML(true); // send as HTML
$mail->Subject = "信件標題";
// 信件標題
$mail->Body = "信件內容";
//信件內容(html版,就是可以有html標籤的如粗體、斜體之類)
$mail->AltBody = "信件內容";
//信件內容(純文字版)
if(!$mail->Send()){
echo "寄信發生錯誤:" . $mail->ErrorInfo;
//如果有錯誤會印出原因
}
else{
echo "寄信成功";
}
當然這程式還可以有其他變化
比方說利用表單和$_POST變數來存
傳送附檔如果前一頁表單是用檔案上傳欄位的話
也可以這樣寫:
$AtF = $_FILES['uploadfile']['name'];
$mail->AddAttachment($AtF);
}else {
//不做事
}
//傳送附檔
另外如果寄信有亂碼的話
不妨加上一條:
mb_internal_encoding('UTF-8');
可把內部預設編碼改為UTF-8
加在require("../phpMailer/class.phpmailer.php");的下一行
也可以利用iconv()來進行轉換
比方說
如果標題那邊原本是
$mail->Subject = "信件標題";
就改成
$mail->Subject = iconv("big5","UTF-8","信件標題");
.
.
.
.
.
.
.
.
.
留言列表