最近在安裝 Discuz!X2.0 時,檢測郵件設定時,總是提示 「郵件傳送返回錯誤資訊」 。 (如圖) 。
本人環境配置為:
Linux 虛擬主機
伺服器軟體:Apache
伺服器資料庫:MySQL


百度一下,發現不少站長都遇上了這個問題,網上都是千篇一律的轉載一篇 Discuz 的官方教程,但是根本無法解決 「郵件傳送返回錯誤資訊」 的問題。
經過幾天不停的百度與 GOOGLE,總結出現此類錯誤的大多數伺服器為虛擬主機,原因是有些主機商為防止垃圾郵件,遮蔽了了 25 埠 (25 埠為 SMTP 即 Simple Mail Transfer Protocol,簡單郵件傳輸協議) 。從而導致了 「郵件傳送返回錯誤資訊」 。
解決方法一
Discuz 論壇 hixinqin 同學提供的方法:找到程式裡的 fsockopen 函式,替換為:pfsockopen,即可解決所有問題,兩個函式的區別在於 pfsockopen 保持 keep-alive,使得駭客無法進行連線數攻擊。已知使用 fsockopen 函式的程式檔案路徑 (在 fsockopen 前加 p, 即 fsockopen 修改為 pfsockopen 即可):
Discuz X2 安裝提示不支援 fsockopen:
將 /include/install_var.php 檔案裡的
$func_items = array('mysql_connect', 'fsockopen', 'gethostbyname', 'ile_get_contents', 'xml_parser_create');
替換為:
$func_items = array('mysql_connect', 'pfsockopen', 'gethostbyname', 'file_get_contents', 'xml_parser_create');
即可正常安裝。
X2 郵件相關包含 fsockopen 的檔案:
sourcefunctionfunction_mail.php 郵件相關
uc_clientlibsendmail.inc.php 郵件相關
uc_serverlibsendmail.inc.php 郵件相關
PS:如果你在後臺郵件測試提示錯誤,不必擔心,測試郵箱還是會有郵件收到的!
相關教程地址:www.discuz.net/thread-2478985-1-1.html
解決方法二
登入網站虛擬空間後臺 (以下已 bluehost 虛擬主機為例):
進入 Bluehost 的 cPanel,cPanel--》 Email Accounts--》 Add a New Email Account
2 、指定一個新的 Email 帳戶,比如帳戶名 sfz99,並選擇一個需要關聯與之的域名比如 sfz99.com,建立郵箱賬號:admin@sfz99.com 。
3 、建立密碼 (建議使用密碼生成器,防止密碼過於簡單) 。


在 DISCUZ 郵件傳送方式中選擇第一項 「透過 PHP 函式的 sendmail 傳送」 。 (根據自己對應的伺服器選擇)

希望這兩個方法,能幫倒還沒解決這類麻煩的站長童鞋,其實最大問題就是主機商 25 埠的是否禁止,如果以上都不能解決,建議換一個主機空間。