我正在使用MAMP在家中的計算機上構建網站。我使用的代碼使用PHP mail()函數發送電子郵件,但每當我測試它時,郵件都不會發送。PHP郵件()無法正常工作
我的電腦連接到網絡,但我想知道是否有關於本地託管的東西,防止郵件發送。我沒有收到任何類型的錯誤消息。
任何想法?
我正在使用MAMP在家中的計算機上構建網站。我使用的代碼使用PHP mail()函數發送電子郵件,但每當我測試它時,郵件都不會發送。PHP郵件()無法正常工作
我的電腦連接到網絡,但我想知道是否有關於本地託管的東西,防止郵件發送。我沒有收到任何類型的錯誤消息。
任何想法?
PHP可以通過兩種方式之一發送郵件。
第一個和非Windows系統上的默認設置是使用系統上安裝的本地郵件傳輸代理。這將是「sendmail」或與它兼容的應用程序,最流行的可能是後綴。
另一種是通過SMTP連接到某些郵件服務器。
你要麼需要在本地系統上安裝一個郵件傳輸代理(並正確設置它),或編輯PHP的配置指定了一個SMTP服務器地址和端口。
是的 - 服務器的我的工作與運行後綴庫 - 你需要一些庫來處理這個功能。 – Atticus 2011-05-09 00:47:39
您需要設置SMTP服務器,以便能夠使用mail
功能,或者您可以使用PHPMailer
class,有了它,你能避免使用郵件功能和設置問題,PHPMailler
才能正常工作要加載需要插槽擴展。
是的,有些東西可能會阻止本地託管的郵件。首先,您的ISP可能會阻止SMTP到ISP以外的其他服務器。請問你的ISP支持是否阻止了SMTP ......或者嘗試用電報來傳送某人的MX端口25,你會得到迴應嗎?
如果您的ISP阻止smtp,您仍可以發送郵件,但首先您必須通過託管電子郵件服務器(如ISP郵件服務器)轉發該電子郵件。這個過程稱爲「智能託管」,您可以搜索更多信息。
即使您沒有被阻止在25號端口,許多網站也會拒絕或丟失源自動態或住宅IP地址的smtp流量,因此再次提出了智能主機的建議。
此外,我建議不要在PHP中使用內置的mail()函數...使用替換和改進它的東西,如http://pear.php.net/package/Mail或http://sourceforge.net/projects/phpmailer/。再次,使用SMTP方法,因爲它比直接發送或調用Sendmail更可靠。
確認這個問題非常重要,通過telnet手動執行SMTP。這樣你就可以從PHP中分離出問題。我做了多年的ISP支持,看到了很多問題。大多數人都正確地設置了php和郵件,但卻陷入了與SMTP有關的後臺網絡問題。
如果您安裝了Wireshark,它可以記錄網絡流量,並且您可能會看到實際的SMTP流量,例如遠程服務器可能拒絕您的連接。 Wireshark很有幫助,但不是必須解決這個問題。祝你好運。
mail()函數像OSX系統一樣對待OSX。你需要一個本地郵件服務器來工作(postfix/sendmail/etc。) – mario 2011-05-09 00:19:41
@mario我們需要一個*關閉評論作爲答案*按鈕:) – alex 2011-05-09 00:23:55
[將smtp端口從25更改爲587?](http:/ /堆棧溢出。com/questions/5913149/change-smtp-port-from-25-to-587) – 2011-05-09 00:26:34