1. 程式人生 > >Cannot connenct to relay host smtp.163.com (php郵件傳送失敗)

Cannot connenct to relay host smtp.163.com (php郵件傳送失敗)

真是無語 搞了那麼久,網上全部都說是 伺服器php.ini 配置的問題,全tm都是抄的,誤人子弟,好在 發現 該好貼,不過 阿里雲 也真是 操蛋,遮蔽了25埠也不說,好吧!可能是我 沒注意到。 扯淡完畢,下面是 解決問題的正文:
織夢自帶了郵件傳送功能,當我們在後臺配置好了smtp資訊後,如果還是傳送郵件失敗,可以通過下面的方法來定位。
PS:關注結果的站長們可以直接看第4、5步的結論,本例導致織夢郵件傳送不出去的原因是阿里雲禁用了25埠。
  1、登陸dede網站後臺,找到include/mail.class.php,先做好備份,然後對該檔案做一些修改以開啟debug日誌,可以在後臺用vi命令直接修改,也可以將該檔案用ftp工具下載到本地電腦,修改後再上傳覆蓋,修改點如下: a)修改$this->debug = TRUE; 表示開啟debug日誌 b)修改$this->log_file = "/yjdata/www/mail.log"; 表示輸出日誌到哪個地方
  2、在後臺,到上面$this->log_file指定的目錄下用下面的命令建立mail.log檔案,同時修改檔案許可權,命令如下 cd /yjdata/www/ touch mail.log chmod 777 mail.log
  3、上面的步驟完成後,再次做操作觸發郵件的傳送,比如註冊使用者、找回密碼等等,這時候可以去檢視日誌,看看到底是什麼原因,比如日誌內容顯示如下,Cannot connenct to relay host smtp.qq.com,然後就連線超時了。


4、網上很多類似問題的帖子說問題出現在伺服器的環境配置上,檢查方法如下:找到php.ini,檢視兩個引數,一個是allow_url_fopen,這個引數要設定成on;另一個是disable_functions,如果這個引數後面出現了fsock,fsockopen,則需要把這兩個函式名去掉,完成後重啟apache。不過這裡不是這個原因導致的,因為這裡的錯誤是,Error: Connection timed out (110),是連線超時,說明fsock方法是可用的,只是連不上郵件伺服器;而前面說的伺服器配置問題的錯誤會是Error: (),空,說明fsock方法不可用。按前面說的檢查方法檢查後發現配置的沒問題,說明不是這個原因導致的。
  5、那連線超時是什麼原因導致的呢,一般我們配置的smtp伺服器埠都是25,不過有的伺服器或空間提供商把25埠給禁用了,比如阿里雲就給禁用了,這個可以找相應的提供商確認一下。如果真是禁用了25埠,可以採用465埠,這個埠很多主流的郵件服務商像網易郵箱、QQ郵箱、阿里雲郵箱也都支援,採用了465埠,織夢後臺需要如下這麼配置,注意, smtp伺服器地址前面一定要加上ssl://
,否則還是不可用。
  6、這時候再重試,可以傳送郵件了,檢視日誌顯示如下
  7、注意,問題解決後,記得還原include/mail.class.php,不在記錄debug日誌。

原文地址: https://www.imoban.me/baike/5.html