[其它] 在phpBB2裡使用gmail 發信
發表於 : 2008-02-19 23:19
首先聲明, 這個方法僅適用於使用自己電腦架站的主機
租用的空間或標榜有支援curl模組的空間並不一定能用(000webhost雖有支援curl, 但並無法使用)
首先, 先到此處下載libgmailer 1.37版
下載方式:
點libgmailer.php進入後, 在Revision 1.37旁的download按滑鼠右鍵/另存新檔
在實際修改phpBB2 程式碼之前, 建議先做個小測試, 看看程式是否能正常執行
因此, 我們先選擇將libgmailer.php存到網站根目錄下(ex:C:\Appserv\www\)
接著修改php.ini檔, 啟用curl模組
修改完後, 請先將libeay32.dll、ssleay32.dll複製到Path搜尋路的其中一個路徑裡
(或直接放在windows 或 windows/system32目錄下)
然後重新啟動Apache
接著在網站根目錄下建立一個測試用的php檔(ex:test.php), 內容如下:
(注意:此處有用到iconv這類的轉換編碼模組, 所以請先確認自己的機器有啟用iconv)
$gmail_acc、$gmail_pwd 請修改成你自己的gmail帳號/密碼, 帳號部份請記得加上@gmail.com
準備完畢後, 就可以執行這個php程式, 看是否能收到信
註1.
在發信前, 建議先到要用來發信的Gmail帳號裡勾選「外寄郵件使用 Unicode (UTF-8) 編碼」
這樣可以確保寄到某些國外的主機時, 信件主旨及內容不會變成亂碼
(有些主機就算你已先用iconv將內容轉換成UTF-8, 還是一樣會變成亂碼, 因此建議勾選上述選項來解決這個問題)
註2.
只有系統是採用BIG-5編碼的機器才需要使用iconv或mbstring模組做轉編碼的動作
若系統(或測試用檔案)為UTF-8編碼,則不需再做轉碼的動作
註3.
相同的session只能寄一次信
若需要一直進行測試, 則必須每測完一次就重新開啟一個新的瀏覽器
否則第一次之後的信件將不會被寄出
假設測試結果沒有問題的話, 那麼就可以開始動手修改phpBB2程式了
首先, 請先將libgmailer.php複製到 includes/目錄下
#
#--------[ OPEN ]----------------
#
includes/emailer.php
#
#--------[ FIND ]----------------
#
#
#--------[ AFTER, ADD ]----------------
#
#
#--------[ SAVE/COLSE ALL FILE ]----------------
#
# EoM
請記得要到系統管理控制台中, 將SMTP 使用者帳號/密碼設定成Gmail的帳號(含@gmail.com)/密碼
勾選「使用 SMTP 伺服器傳送電子郵件」, 「SMTP 伺服器網域名稱 」請填smtp.gmal.com
不填SMTP 伺服器名稱好像也可以, 因為就個人的理解, 這支程式並不是真的走SMTP
如果想改寄件人的名稱, 可以在gmail信箱裡的「設定/帳戶」做變更
租用的空間或標榜有支援curl模組的空間並不一定能用(000webhost雖有支援curl, 但並無法使用)
首先, 先到此處下載libgmailer 1.37版
下載方式:
點libgmailer.php進入後, 在Revision 1.37旁的download按滑鼠右鍵/另存新檔
在實際修改phpBB2 程式碼之前, 建議先做個小測試, 看看程式是否能正常執行
因此, 我們先選擇將libgmailer.php存到網站根目錄下(ex:C:\Appserv\www\)
接著修改php.ini檔, 啟用curl模組
代碼: 選擇全部
extension=php_curl.dll(或直接放在windows 或 windows/system32目錄下)
然後重新啟動Apache
接著在網站根目錄下建立一個測試用的php檔(ex:test.php), 內容如下:
(注意:此處有用到iconv這類的轉換編碼模組, 所以請先確認自己的機器有啟用iconv)
代碼: 選擇全部
<?php
require("libgmailer.php");
$gmail_acc = "Gmail帳號@gmail.com";
$gmail_pwd = "Gmail密碼";
$my_timezone = "GMT +08:00";
$gmailer = new GMailer();
if ($gmailer->created) {
$gmailer->setLoginInfo($gmail_acc, $gmail_pwd, $my_timezone);
if ($gmailer->connect()) {
// GMailer connected to Gmail successfully.
// Do something with it.
$to = "收件人的信箱位址";
$subj = iconv("BIG-5", "UTF-8", "測試用信件");
$body = iconv("BIG-5", "UTF-8", "libgmailer發信測試");
$gmailer->send($to, $subj, $body, $cc="", $bcc="", $mid="", $tid="", $files=0, $draft=false, $orig_df="", $is_html=0, $from, $attachments = array());
} else {
die("Fail to connect because: ".$gmailer->lastActionStatus()."\n");
}
} else {
die("Failed to create GMailer because: ".$gmailer->lastActionStatus()."\n");
}
?>準備完畢後, 就可以執行這個php程式, 看是否能收到信
註1.
在發信前, 建議先到要用來發信的Gmail帳號裡勾選「外寄郵件使用 Unicode (UTF-8) 編碼」
這樣可以確保寄到某些國外的主機時, 信件主旨及內容不會變成亂碼
(有些主機就算你已先用iconv將內容轉換成UTF-8, 還是一樣會變成亂碼, 因此建議勾選上述選項來解決這個問題)
註2.
只有系統是採用BIG-5編碼的機器才需要使用iconv或mbstring模組做轉編碼的動作
若系統(或測試用檔案)為UTF-8編碼,則不需再做轉碼的動作
註3.
相同的session只能寄一次信
若需要一直進行測試, 則必須每測完一次就重新開啟一個新的瀏覽器
否則第一次之後的信件將不會被寄出
假設測試結果沒有問題的話, 那麼就可以開始動手修改phpBB2程式了
首先, 請先將libgmailer.php複製到 includes/目錄下
#
#--------[ OPEN ]----------------
#
includes/emailer.php
#
#--------[ FIND ]----------------
#
代碼: 選擇全部
// Send message ... removed $this->encode() from subject for time being#--------[ AFTER, ADD ]----------------
#
代碼: 選擇全部
//----------------------Gmail----------------------
include_once($phpbb_root_path . 'includes/libgmailer.'.$phpEx);
$gmail_acc = $board_config['smtp_username'];
$gmail_pwd = $board_config['smtp_password'];
$my_timezone = "GMT +08:00";
$gmailer = new GMailer();
if ($gmailer->created) {
$gmailer->setLoginInfo($gmail_acc, $gmail_pwd, $my_timezone);
if ($gmailer->connect()) {
// GMailer connected to Gmail successfully.
// Do something with it.
$to = $to;
$subj = ($lang['ENCODING'] == 'utf8') ? $this->subject : iconv($lang['ENCODING'], "UTF-8", $this->subject);
$body = ($lang['ENCODING'] == 'utf8') ? $this->msg : iconv($lang['ENCODING'], "UTF-8", $this->msg);
@$gmailer->send($to, $subj, $body, $cc="", $bcc="", $mid="", $tid="", $files=0, $draft=false, $orig_df="", $is_html=0, $from="", $attachments = array());
} else {
die("Fail to connect because: ".$gmailer->lastActionStatus()."\n");
}
} else {
die("Failed to create GMailer because: ".$gmailer->lastActionStatus()."\n");
}
return true;
//----------------------Gmail----------------------#--------[ SAVE/COLSE ALL FILE ]----------------
#
# EoM
請記得要到系統管理控制台中, 將SMTP 使用者帳號/密碼設定成Gmail的帳號(含@gmail.com)/密碼
勾選「使用 SMTP 伺服器傳送電子郵件」, 「SMTP 伺服器網域名稱 」請填smtp.gmal.com
不填SMTP 伺服器名稱好像也可以, 因為就個人的理解, 這支程式並不是真的走SMTP
如果想改寄件人的名稱, 可以在gmail信箱裡的「設定/帳戶」做變更