phpbb論壇無法寄信的問題、與gmail連線

沒想到這個問題竟然花了我一個晚上

適用症狀:

1.在自己電腦上使用appserv、xampp、或是分開架設apache+php+mySQL欲執行phpbb論壇

2.論壇無法寄信,或是寄信幾乎失敗(有時候會成功)

3.論壇想用gmail當作管理員信箱

4.在安裝論壇的時候沒有設定管理員信箱

.

原理解釋:

1.php有一個功能,叫做sendmail();
2.phpbb論壇中有一個指令,叫做mail();

這兩個都是要先告訴別人"我是某某某",也就是要先設定smtp或是pop3

3.設定郵件服務
4. 郵件服務與外面的服務掛勾

簡單的說,論壇寄信了,總要個郵差定時收信、傳遞
而且你還要告訴這位郵差郵政總局在哪裡,不然他可能把信隨便亂塞,或是挨家挨戶地問,請問你認識某某某嗎

.

如果你要用xampp把自己電腦改成smtp server,也就是,自己成立一個小鎮的郵局

我參考了這篇文章

(1) http://ccc1960.blogspot.com/2011/03/xamppsmtp.html

注意"SMTP client"的地方,他用的是

End-to-end SMTP Client

這和另一篇(2) http://blog.huangjingwei.com/2010/08/xampp-mail-server-settings-mercury-method/的方法是不同的

兩者的設定在protocol mod中修改,改完後要重開Mercury

 

已原理上來說,SMTP client就是把你小鎮的郵局當作客戶,把信件和中央郵局溝通

如果是end-to-end然後把中央郵局設為168.95.1.1,信就會寄到中華電信

如果是smart host設為smtp.gmail.com,信就會送到gmail的郵局

 

這邊如果沒設定好,你就只能test@localhost寄給test@localhost,也就是小鎮內寄給小鎮的人。

.

以上這個方法雖然我建立成功,但是我計的信的dn都變成localhost,我修改一下

但更大的問題是,信都被hotmail認為是垃圾郵件。

原因是因為這個小鎮的郵局,是私人自己蓋的,在中央郵局那邊沒有這個紀錄,也不承認

這樣的話別人回信也寄不回來的

(就好像,你自稱你是台北市台大阿里巴巴郵局
或是  寄件人卻寫台北101的103樓xxx。
這樣子信還是會寄到,但對方根本無法回)

 

.

不過如果你只是要論壇寄信,那你只要一個信箱就好,根本不用自己做一個郵局

我參考了http://webcache.googleusercontent.com/search?q=cache:6HfzZniiWV0J:www.veryhuo.com/a/view/38887.html+&cd=15&hl=zh-TW&ct=clnk&gl=tw&lr=lang_zh-CN%7Clang_zh-TW

XAMPP提供了一個"偽郵差sendermail.exe",可以幫你把信轉到smtp去,
也就是說不管你小鎮誰計了什麼信,反正他都丟到某個信箱去。

以下才是我要記錄的設定方法,因為原網頁不知道為什麼消失所以我備份一下

.

假設xampp 灌在D

讓XAMPP使用gmail寄信,

當然你要先有個gmail信箱

1.

讓php知道"我的鎮上有個郵差叫做sendmail.exe"

修改 D:\xampp\php\php.ini

找到[mail function]  以下幾行,把;去掉,改成

SMTP = smtp.gmail.com
smtp_port = 25
sendmail_from = 你的Gmail信箱 <-讓別人可以回信
sendmail_path = “\"D:\xampp\sendmail\sendmail.exe\" -t"

2.

讓sendmail知道要把信丟到哪裡

修改D:\xampp\sendmail\sendmail.ini

smtp_server=localhost
smtp_port=25
default_domain=gmail.com
error_logfile=error.log    ;可刪去
debug_logfile=debug.log  ;可刪去
auth_username=你的Gmail信箱
auth_password=你的Gmail信箱密碼
force_sender=你的Gmail信箱

3.

這樣還是會有錯,因為xampp無法直接使用ssl加密連線到gmail的smtp,
為什麼我們不在phpbb的一般設定中關聯smtp也是同樣的道理
如果你的mail信箱不用ssl加密,那就可以直接在phpbb中設定

所以你需要在你的server上架設SSL代理

去http://www.stunnel.org的download,找stunnel-4.53-installer.exe

安裝

修改stunnel中的stunnel.conf

找到[gmail-smtp] ,把已下註解拿掉

[gmail-smtp]
client = yes
accept = 127.0.0.1:25
connect = smtp.gmail.com:465

 

4.重啟apache、啟動Stunnel,完成

5.可以去phpbb的地方發送一個私人訊息,預設私人訊息會通知其他使用者

或是

管理員控制台(ACP)>系統 > 一般的任務 > 大量e-mail
可以寄信給指定使用者
打完收工

迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s