2011-05-09 127 views
0

我正在使用MAMP在家中的計算機上構建網站。我使用的代碼使用PHP mail()函數發送電子郵件,但每當我測試它時,郵件都不會發送。PHP郵件()無法正常工作

我的電腦連接到網絡,但我想知道是否有關於本地託管的東西,防止郵件發送。我沒有收到任何類型的錯誤消息。

任何想法?

+2

mail()函數像OSX系統一樣對待OSX。你需要一個本地郵件服務器來工作(postfix/sendmail/etc。) – mario 2011-05-09 00:19:41

+0

@mario我們需要一個*關閉評論作爲答案*按鈕:) – alex 2011-05-09 00:23:55

+0

[將smtp端口從25更改爲587?](http:/ /堆棧溢出。com/questions/5913149/change-smtp-port-from-25-to-587) – 2011-05-09 00:26:34

回答

1

PHP可以通過兩種方式之一發送郵件。

  1. 第一個和非Windows系統上的默認設置是使用系統上安裝的本地郵件傳輸代理。這將是「sendmail」或與它兼容的應用程序,最流行的可能是後綴。

  2. 另一種是通過SMTP連接到某些郵件服務器。

你要麼需要在本地系統上安裝一個郵件傳輸代理(並正確設置它),或編輯PHP的配置指定了一個SMTP服務器地址和端口。

+0

是的 - 服務器的我的工作與運行後綴庫 - 你需要一些庫來處理這個功能。 – Atticus 2011-05-09 00:47:39

0

您需要設置SMTP服務器,以便能夠使用mail功能,或者您可以使用PHPMailer class,有了它,你能避免使用郵件功能和設置問題,PHPMailler才能正常工作要加載需要插槽擴展。

0

是的,有些東西可能會阻止本地託管的郵件。首先,您的ISP可能會阻止SMTP到ISP以外的其他服務器。請問你的ISP支持是否阻止了SMTP ......或者嘗試用電報來傳送某人的MX端口25,你會得到迴應嗎?

如果您的ISP阻止smtp,您仍可以發送郵件,但首先您必須通過託管電子郵件服務器(如ISP郵件服務器)轉發該電子郵件。這個過程稱爲「智能託管」,您可以搜索更多信息。

即使您沒有被阻止在25號端口,許多網站也會拒絕或丟失源自動態或住宅IP地址的smtp流量,因此再次提出了智能主機的建議。

此外,我建議不要在PHP中使用內置的mail()函數...使用替換和改進它的東西,如http://pear.php.net/package/Mailhttp://sourceforge.net/projects/phpmailer/。再次,使用SMTP方法,因爲它比直接發送或調用Sendmail更可靠。

確認這個問題非常重要,通過telnet手動執行SMTP。這樣你就可以從PHP中分離出問題。我做了多年的ISP支持,看到了很多問題。大多數人都正確地設置了php和郵件,但卻陷入了與SMTP有關的後臺網絡問題。

如果您安裝了Wireshark,它可以記錄網絡流量,並且您可能會看到實際的SMTP流量,例如遠程服務器可能拒絕您的連接。 Wireshark很有幫助,但不是必須解決這個問題。祝你好運。