最近在安装 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 端口的是否禁止,如果以上都不能解决,建议换一个主机空间。