2010-08-05 81 views
1

我有WAMP Server 2.0的默認安裝。爲什麼mail()PHP函數不適用於WAMP默認安裝?

我試圖發送使用這個簡單的腳本電子郵件:

<?php 

if (mail('[email protected]', 'My Title', 'Some Text')) { 
    echo "OK"; 
} else { 
    echo "Why ??"; 
} 

?> 

不幸的是,我得到以下警告:

警告:電子郵件()[function.mail]:無法連接到「本地主機」端口25的郵件服務器,在php.ini中驗證您的「SMTP」和「smtp_port」設置,或在第3行的C:\ My_Path \ send_email.php中使用ini_set() 爲什麼?

這可能是什麼原因?

我預期發送電子郵件是一個非常簡單的任務... :(

+0

編輯main()到mail()。 – Siddiqui 2010-08-05 05:49:59

+2

您需要訪問發送郵件服務器才能發送郵件。 mail()函數連接到php.ini文件中配置的服務器(如錯誤​​消息中所述)並指示它發送消息。我會建議使用googling *發送帶有php和gmail *的電子郵件,以獲得有關「mail()」和smtp服務器基礎的好教程。 – 2010-08-05 05:50:18

回答

6

爲了能夠送你需要一個發送郵件服務器(MTA)的電子郵件。在大多數Linux系統中存在一個默認情況下,和PHP將通過將郵件提交給sendmail來使用它,這是一個Linux應用程序/別名,用於將郵件提交給您已安裝的任何MTA。

Windows默認不包含MTA在Windows中,爲了能夠從PHP發送郵件你需要訪問一些外發的電子郵件服務器並告訴PHP它的地址和端口,這是在php.ini中使用SMTPsmtp_port設置完成的,默認爲localhost在港口25。除非您自己在該機器上設置郵件服務器,否則這將失敗。

如果您的ISP爲您提供外發郵件服務器,例如,您可以使用其地址和端口號。或者,如果您認真對待發送郵件,則需要在本地計算機或本地網絡中的某個位置設置自己的郵件服務器。

+0

謝謝,我真的在尋找一個簡單易用的Windows解決方案,因爲我相信當我把應用程序放在真正的Unix服務器上時,我不會遇到這個問題。那麼對Windows來說最簡單的解決方案是什麼? – 2010-08-05 05:56:39

+0

最簡單的方法就是將它指向你的ISP的SMTP服務器,我認爲(儘管如果你在測試環境中並且實際上並不希望郵件發送,那麼這樣做可能不太好)。或者你可以看看這些解決方案:http://stackoverflow.com/questions/30076/need-a-lightweight-free-windows-smtp-server - 看起來像Windows Server也帶有它自己的SMTP服務器,你可以安裝。 – thomasrutter 2010-08-05 06:03:24

+0

請注意,如果您使用ISP的外發電子郵件服務器並且處於住宅連接狀態,則需要遵守可能禁止運行郵件列表的政策,限制可發送的電子郵件數量,要求您從ISP發送的郵件在「發件人」一行中的電子郵件地址等。如果您想發送嚴重的電子郵件,您可以考慮自己設置SMTP服務器,或者爲外部郵件中繼付費。 – thomasrutter 2015-11-30 23:24:35

1

簡短回答:沒有爲本地計算機(localhost)配置SMTP服務器。 Windows不附帶內置的SMTP服務器,可以開箱即用。您可以通過不同的主機中繼郵件(使用SMTP php.ini指令) - 但您很少能找到測試環境郵件消息的開放中繼。

而不是使用mail(),您可以使用像PHPMailer這樣的腳本,它可以通過適當的身份驗證直接連接到您的外發電子郵件服務器。這是quick snippet for Gmail(雖然它不完整)和full example

0

您可以使用「假的Sendmail」:http://glob.com.au/sendmail/

所以你不需要你的測試機器上的SMTP服務器,你只需要設置的路徑,程序在php.ini

再見! Stefan

相關問題