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