:::

在XAMPP設定郵寄服務 / Enable Mail Function in XAMPP

image

XAMPP是結合ApachePHPMySQLSendmail等多項服務的整合伺服器,是我很常用伺服器套裝軟體。如果要使用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

image

打開XAMPP Control Panel,把Apache按下「Stop」,等它關閉之後,再按下「Start」即可。


結語:難怪郵件伺服器很容易被入侵 / Conclusion: Mail Sever may be hacked easily

如果你仔細看上述設定的話,會發現其實我並沒有輸入任何帳號密碼的資料,就能使用政大的郵件伺服器進行寄信。我不確定這是不是因為我現在在政大的區域網路內所以可以這樣做,不過這顯然是很危險的一件事情──嘿,我隨隨便便都可以借用政大的郵件傳送伺服器來寄信喔。

稍微摸一下mail()這個寄信的方式,你就可以知道其實要改寫寄件者、收件者等訊息都不難。不僅偽裝成別人寄信很容易,而且也可以設定你回信時的地址──是的,你回信時,預設的收件者可能不會是寄件者喔。

嗯,總之寄送郵件真是充滿陷阱的服務,也難怪垃圾郵件如此盛行。請大家謹慎使用吧。

總共4 則留言 ( 我要發問 , 隱藏留言 顯示留言 )

  1. 學長好,我也是貓空大學的

    最近也卡在一直無法使用Mail()寄信

    拜讀學長文章,完全照學長的設定,依舊無法寄出

    後來想到,會不會跟我使用分享器上網有關?

    我在電腦上用XAMPP架PHP SERVER

    local瀏覽一切正常

    但外部連不進來,後來用DMZ方式,外部就能進來

    所以想請教,是不是不能用分享器的方式來架伺服器或利用Mail()等?

    分享器分配的IP多為192.168.x.x 型式,導致系統判斷我不是在校內網域,以致無法使用nccu.edu.tw?

    謝謝!

    回覆刪除
  2. To 1樓匿名學弟:

    你的問題分成兩個部分。

    第一部分是分享器提供外部連線的問題,這是需要設定分享器的網路。基本上是用DMZ沒錯。如果你的分享器IP為140.119.60.120,那提供外部連線時就是使用這個網址。

    關於第二個問題,到底能不能用Mail()這點。
    你可以試試看能不能自己電腦的Outlook之類的郵件軟體收發學校的郵件(不是用WebMail喔)。
    如果可以的話,那應該是沒有什麼理由好被擋下來的。
    因為Mail()的功能也是類似這種收發信而已。

    如果還是不行的話,嘗試使用Google的設定看看吧

    回覆刪除
  3. 學長好

    第一部分已解決

    第二部分

    確定可以使用Outlook收發學校郵件

    但依然無法成功使用Mail()...

    最後改用phpmailer 設定簡單 也成功寄出

    謝謝學長回覆!

    回覆刪除
  4. 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寄信
    真是不錯耶

    感謝分享

    回覆刪除