2011-05-06 102 views
7

我的ISP已經阻止了從PHP發送郵件的端口25,而是允許使用端口587或465。我如何強制PHP郵件功能使用端口587而不是默認的25? BTW:我在OSX 10.6.6使用MAMP PRO將smtp端口從25更改爲587?

更新:我試圖改變php.ini中的設置來

[mail function] 
; For Win32 only. 
SMTP = localhost 
smtp_port = 587 

,因爲我在Mac上不認爲這能做些什麼成爲我的解決方案,並且在我嘗試之後它不起作用。它給了我下面的錯誤信息。

May 6 20:32:25 Ibrahim-Armars-MacBook-Pro postfix/smtp[2822]: connect to alt2.aspmx.l.google.com[74.125.159.27]:25: Operation timed out 
May 6 20:32:25 Ibrahim-Armars-MacBook-Pro postfix/smtp[2823]: connect to alt2.aspmx.l.google.com[74.125.159.27]:25: Operation timed out 
May 6 20:32:25 Ibrahim-Armars-MacBook-Pro postfix/smtp[2827]: connect to alt2.aspmx.l.google.com[74.125.159.27]:25: Operation timed out 
May 6 20:32:25 Ibrahim-Armars-MacBook-Pro postfix/smtp[2825]: connect to alt2.aspmx.l.google.com[74.125.159.27]:25: Operation timed out 
May 6 20:32:25 Ibrahim-Armars-MacBook-Pro postfix/smtp[2828]: connect to alt2.aspmx.l.google.com[74.125.159.27]:25: Operation timed out 

你看到它仍然試圖通過端口25連接?我如何在mac中更改它?

回答

5

更改smtp_port隻影響mail()如何與SMTP設置指定的服務器進行交互。這不是問題。這個問題是:

  1. 您在使用本機作爲SMTP服務器 - 和
  2. 您的ISP阻止郵件中繼的本地SMTP服務器(後綴)出來到Gmail

第一,read this thread。它討論了同樣的確切問題。結果是你需要使用不同的郵件服務器,最好是你的ISP郵件服務器。如果您想使用他們的電子郵件服務,您的ISP會告訴您使用哪種服務器和端口用於出站郵件?您應該能夠在您的PHP本地運行中使用它,就像您使用Thundebird這樣的電子郵件客戶端,並且能夠發送到Gmail。

+0

我使用Gmail的SMTP服務器,並編輯了一些後綴配置文件,它工作得很好。謝謝你的提示。 – 2011-05-07 04:54:24

3

在您的php.ini中設置smtp_port = 587。見http://php.net/manual/en/mail.configuration.php

編輯

如AJ指出,這不會,如果您使用的是本地後綴或者郵件發送,您可以通過指定smtp = localhost做解決問題。嘗試將其設置爲ISP的SMTP服務器地址。

如果在允許您發送郵件之前還需要驗證,那麼這可能會導致下一個問題,這是許多ISP所做的。在這種情況下,你最好的選擇是Pear Mail package。順便說一句,您還可以在腳本中指定郵件服務器和端口。從文檔:

$params["host"] - The server to connect. Default is localhost. 
$params["port"] - The port to connect. Default is 25. 
$params["auth"] - Whether or not to use SMTP authentication. Default is FALSE. 
$params["username"] - The username to use for SMTP authentication. 
$params["password"] - The password to use for SMTP authentication. 
+0

它說只在Windows下使用,但你看到我在Mac上,我如何改變它在Mac? – 2011-05-06 14:58:42

+0

查看PHP手冊中的評論:「儘管此頁面提到的關於僅在Windows下使用的」SMTP「和」smtp_port「設置,所有Drupal站點都使用這些設置發送電子郵件,而不管它們在哪個操作系統中運行「。 – 2011-05-06 15:02:43

+0

我已更新我的帖子。請看看 – 2011-05-06 15:05:24

1

您可以編輯php.ini文件(如果你有機會),並設置smtp_port = 587或者在你的代碼,ini_set('smtp_port', 587)

0

如果可以,請嘗試用ini_set()覆蓋smtp_port設置。 應該是這樣的:

ini_set('smtp_port', 587); 
0

對於那些使用MAMP並且無法發送來自php mail()函數的郵件,因爲端口25被ISP阻止(在我的情況下),這裏有一些信息可以幫助您解決它。因爲OSX使用postfix發送郵件,如果你打算使用外部smtp服務器,如smtp.gmail.com,我在這裏使用的是你應該做的。你需要Postfix的配置使用Gmail作爲中繼主機

一)打開MAMP和後綴更改外發郵件的域名爲smtp.gmail.com

B)打開終端輸入sudo vi /etc/postfix/main.cf這將請輸入您的管理員密碼,然後在vi編輯器中打開main.cf

c)按ctrl + f併到達文件末尾,並將光標從最後一行向下並按a ,編輯器現在將切換到插入模式來編輯文件。

main.cf中追加此設置

relayhost = [smtp.gmail.com]:587 

smtp_tls_security_level = verify 
#smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt 
smtp_tls_session_cache_database = btree:/var/run/smtp_tls_session_cache 

smtp_sasl_auth_enable = yes 
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd 
smtp_sasl_security_options = noanonymous 

:WQ退出Vim。早在上殼式sudo vi /etc/postfix/sasl_passwd並輸入以下內容(代替您的Gmail地址和Gmail密碼):

[smtp.gmail.com]:587 [email protected]:mypassword 

再按:WQ保存並退出該文件,並運行以下命令

sudo postmap /etc/postfix/sasl_passwd 
sudo postfix reload 

希望這可以幫助有我面臨同樣問題的人。

相關問題