2008年8月4日 星期一

Phpmailer 2.0.0 + Gmail 在 AppServ

沒有想過在PHP中使用發信的功能,竟然會造成我這麼大的困擾,在網路上查了老半天,好不容易才將問題解決,因此不得不在此在說明一下!

當然,我們其實可以使用 PHP 本身所附的函式 mail() ,然而在不同的 mail server 之間,其實各自有著不同的設定方法,甚至再不同的作業平台間 (Winsows & Linux) ,有時也需要不同的設定。

現在要介紹的 phpmailer 的設定方式,主要是針對在 Windows XP 上安裝 Appserv 的使用者,當你想使用 phpmailer class 來進行 Gmail 的郵件寄送時,要做的設定如下:

1. php.ini 的修改,這個檔案位置,按照 Appserv 的安裝設定來說,應該是放在 C:\WINDOWS 下面,打開之後,請將 extension=php_openssl.dll 前面的分號拿掉, 使 php_openssl.dll 可以在 Apache 啟動時同時載入。

2. 由於 php_openssl.dll 與 ssleay32.dll 及 libeay32.dll 相關,而 Appserv 並未將這兩個檔案放到一般 extension 所應該放的 \php5\ext 中,而是放在 \php5 底下,請將這兩個檔案複製到 C:\WINDOWS\system32 下。

3. 重新啟動 Apache 。

4. 程式在處理 Gmail 寄送時,針對 phpmailer 的 SMTP 設定及指令運用,請參考以下程式碼:

---------------------
//發通知信
include("class.phpmailer.php");
include("class.smtp.php");

$mail=new PHPMailer();
$mail->IsSMTP();
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->SMTPSecure = "ssl"; // sets the prefix to the servier
$mail->Host = "smtp.gmail.com"; // sets GMAIL as the SMTP server
$mail->Port = 465; // set the SMTP port for the GMAIL server 非25
$mail->Username = "Gmail 帳號"; // GMAIL username
$mail->Password = "Gmail 密碼"; // GMAIL password

$mail->AddReplyTo("回信的接收人(寄信人)","寄信人姓名");
$mail->From = "寄信者";
$mail->FromName = "寄信者姓名";

$mail->Subject = "郵件主題";

$mail->AddAddress("收件者 Mail","收件者姓名");

$mail->CharSet = "utf-8";
$mail->Encoding = "base64";

$mail->Body = "信件內文";

if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "
寄信成功!
";
}

-----------------------

如此,相信你也可以輕鬆的使用 phpmailer !

沒有留言: