php mailer

利用 phpmailer 透過 gmail 寄信

開發程式有時候會需要讓系統可以替你發送信件
雖說php本身已有內件的mail()函式
但是問題往往卡在需要有一個SMTP伺服器
在網路上找的一些免費SMTP多半都有限制
比方說收件者數量、每天可寄幾封等等的
會需要到程式寄送信件卻通常都超過這個限制!!

所以這邊就介紹一下怎麼利用gmail的SMTP來幫你寄
不需要自己另架SMTP伺服器!!!
然後利用網路上寫得相當不錯的phpmailer寄信程式寄
需要自己寫的程式也就更少、更方便了

 

而要透過gmail寄信也還是有些小限制
比方說要開啟openssl
這點通常還是要自架的server才有權限更動

 

以下我就介紹幾個重點:
怎麼打開Appache的openssl功能
怎麼下載phpmailer
怎麼設定寄信信件內容

 

 

◎怎麼打開Appache的openssl功能

首先我們需要先複製兩個檔案
請先到你安裝AppServ的地方
進到php5資料夾裡

 

php mailer

 

在資料夾裡有兩個dll檔
libeay32.dllssleay32.dll
請先把它們複製

php mailer

php mailer

 

然後請到WINDOWS底下的system32資料夾
把剛剛的兩個dll檔直接貼上

php mailer

 

 

 

再來要修改一下php.ini的設定
修改的地方在這:

php mailer

 

php.ini是用文字文件開啟的

php mailer

 

 

打開php.ini之後
有兩處需要修改
請先ctrl + F叫出搜尋視窗
並設定尋找目標為 openssl

php mailer

 

找到之後
把前面原有的分號刪除即可

php mailer

 

之後一樣 ctrl + F 搜尋 smtp_port
如果找不到的話把向下改向上

php mailer

 

原本預設是25
請改成465

php mailer

 

改完這些地方之後存檔
並且重開Apache
重開的地方在:

php mailer

 

 

重開成功後
進入http://localhost/phpinfo.php
在裡面找到openssl就會發現已經顯示為enabled
這就代表可以使用openssl了

php mailer

 

 

 

◎去哪邊下載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

 

php mailer

 

打開之後
會出現一些有的沒的
phpmailer-ml資料夾點一下打開子目錄
裡面的PHPMailer-ML_v1.8.1
最下面的zip檔就是原始碼(如圖)
下載這包就可以了

php mailer

 

抓完之後解壓縮

php mailer

 

解壓縮之後在以下的目錄裡面
就可以找到phpmailer主程式

php mailer  →  php mailerphp mailer


請把phpmailer整個資料夾
搬到Appserv的www資料夾中吧!!
看你要放在哪個子目錄都可以

 

 

◎怎麼設定寄信信件內容

控制寄信的主要檔案是class.phpmailer.php這個檔

php mailer

 

這裡面需要改兩個設定
在大約177行這附近
找一下就可以找到

原本的設定是這樣:

php mailer

 

把這兩項改成:

php mailer 

存檔之後就可以了

 

那再來
我自己要寄信的程式要怎麼呼叫phpmailer呢?
他主要的功能都已經包好
所以我們只要將它的功能拿出來用即可

 

require("../phpMailer/class.phpmailer.php");
$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變數來存

傳送附檔如果前一頁表單是用檔案上傳欄位的話
也可以這樣寫:

if (is_uploaded_file($_FILES['uploadfile']['tmp_name'])){
$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","信件標題"); 

 

 

 .

 .

 .

 .

 .

 .

 . 

 .

 .

arrow
arrow
    全站熱搜

    belleaya (愛) 發表在 痞客邦 留言(69) 人氣()