在XAMPP設定郵寄服務 / Enable Mail Function in XAMPP
XAMPP是結合Apache、PHP、MySQL、Sendmail等多項服務的整合伺服器,是我很常用伺服器套裝軟體。如果要使用XAMPP內建的PHP來寄送郵件(使用mail()),那需要對PHP與Sendmail做些設定。你必要有個郵件傳輸伺服器做搭配,本例是用政大的信箱來做範例。以下我會記錄我成功設定的方式。
XAMPP is a web server tool include Apache, PHP, MySQL, Sendmail and other tools. I usually use XAMPP for deploy web service. If you want to use PHP with XAMPP to send e-mail (using PHP's mail() function), you should configure PHP and Sendmail and prepare a SMTP mail server. In this example, I use my university's mail server: "nccu.edu.tw". To let XAMPP enable mail function, following is my configuration.
郵件傳輸伺服器 / SMTP Mail Sever
要讓php使用mail()寄信,你必須要有個能夠寄信的郵件傳輸伺服器。本文是借用政大的MAIL 2000伺服器。基本資訊如下:
- SMTP伺服器位置:nccu.edu.tw
- SMTP連接埠:25
在XAMPP中也可以用Mercury/32來做為郵件傳輸伺服器,不過我還沒研究成功。
XAMPP的安裝 / XAMPP installation
XAMPP是跨平台的軟體,但是Windows跟Linux的XAMPP內容卻不一樣。Linux的XAMPP叫做LAMPP。這篇文章主要介紹的是在Windows底下安裝的XAMPP。
作業系統是Windows 7 64位元版本。XAMPP的版本是1.8.1,主要包括以下套件:
- Apache 2.4.3
- PHP 5.4.7
- Sendmail 32
XAMPP是免安裝軟體,但是解壓縮資料夾必須是在根目錄底下。本文將XAMPP安裝在以下路徑:
D:\xampp\
這個路徑會影響到其他參數的設定,在做以下設定時請務必注意到。
設定php.ini / Configure php.ini
首先要告訴PHP說,我們要使用sendmail來寄信。php.ini是PHP的設定檔,路徑位於:
D:\xampp\php\php.ini
找到 [mail function] 的區段,找到sendmail_path參數,將之設定以sendmail運作,設定參數為:
sendmail_path = "\"D:\xampp\sendmail\sendmail.exe\" -t"
如果用「;」放在一行的前面,表示是註解。
找到mail.log參數,設定寄送郵件的記錄檔,設定參數為:
mail.log = "D:\xampp\php\logs\php_mail.log"
設定sendmail.ini / Configure sendmail.ini
接著要設定sendmail的參數。sendmail.ini設定檔的路徑為:
D:\xampp\sendmail\sendmail.ini
找到smtp_server參數,將之設定為政大信箱位置:
smtp_server=nccu.edu.tw
其他的smtp_port=25、smtp_ssl=auto都用預設的即可。
重新啟動Apache / Restart Apache
打開XAMPP Control Panel,把Apache按下「Stop」,等它關閉之後,再按下「Start」即可。
結語:難怪郵件伺服器很容易被入侵 / Conclusion: Mail Sever may be hacked easily
如果你仔細看上述設定的話,會發現其實我並沒有輸入任何帳號密碼的資料,就能使用政大的郵件伺服器進行寄信。我不確定這是不是因為我現在在政大的區域網路內所以可以這樣做,不過這顯然是很危險的一件事情──嘿,我隨隨便便都可以借用政大的郵件傳送伺服器來寄信喔。
稍微摸一下mail()這個寄信的方式,你就可以知道其實要改寫寄件者、收件者等訊息都不難。不僅偽裝成別人寄信很容易,而且也可以設定你回信時的地址──是的,你回信時,預設的收件者可能不會是寄件者喔。
嗯,總之寄送郵件真是充滿陷阱的服務,也難怪垃圾郵件如此盛行。請大家謹慎使用吧。
學長好,我也是貓空大學的
回覆刪除最近也卡在一直無法使用Mail()寄信
拜讀學長文章,完全照學長的設定,依舊無法寄出
後來想到,會不會跟我使用分享器上網有關?
我在電腦上用XAMPP架PHP SERVER
local瀏覽一切正常
但外部連不進來,後來用DMZ方式,外部就能進來
所以想請教,是不是不能用分享器的方式來架伺服器或利用Mail()等?
分享器分配的IP多為192.168.x.x 型式,導致系統判斷我不是在校內網域,以致無法使用nccu.edu.tw?
謝謝!
To 1樓匿名學弟:
回覆刪除你的問題分成兩個部分。
第一部分是分享器提供外部連線的問題,這是需要設定分享器的網路。基本上是用DMZ沒錯。如果你的分享器IP為140.119.60.120,那提供外部連線時就是使用這個網址。
關於第二個問題,到底能不能用Mail()這點。
你可以試試看能不能自己電腦的Outlook之類的郵件軟體收發學校的郵件(不是用WebMail喔)。
如果可以的話,那應該是沒有什麼理由好被擋下來的。
因為Mail()的功能也是類似這種收發信而已。
如果還是不行的話,嘗試使用Google的設定看看吧
學長好
回覆刪除第一部分已解決
第二部分
確定可以使用Outlook收發學校郵件
但依然無法成功使用Mail()...
最後改用phpmailer 設定簡單 也成功寄出
謝謝學長回覆!
To 3樓匿名,
回覆刪除原來如此,還有phpmailer可以用啊
剛剛大概看了一下教學
http://belleaya.pixnet.net/blog/post/27410978-%5B%E6%95%99%E5%AD%B8%5D-php-%E5%88%A9%E7%94%A8-phpmailer-%E9%80%8F%E9%81%8E-gmail-%E5%AF%84%E4%BF%A1
似乎是可以直接用phpmailer去利用gmail寄信
真是不錯耶
感謝分享