最近在安裝 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 端口的是否禁止,如果以上都不能解決,建議換一個主機空間。