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