推荐应用
Discuz邮件不能发送的原因和解决办法
发布于 2013-01-12
Discuz论坛邮件不能发送的原因:
文件:include/sendmail.php
查找
关于论坛邮件系统的说明
邮件系统能不能正常使用,是由两个方面决定的
1、本身服务器是否支持发送邮件,不同的服务器对邮件发送的支持也是不同的,你可以根据自己的主机来配置论坛根目录下的mail_config.php文件中的$mailsend变量来决定,具体配置见下面的代码
如果你的服务器不支持邮件发送,还有一个办法可以实现就是申请一个支持邮件发送的免费邮箱,然后在上面所说的配置论坛根目录下的mail_config.php文件中的$mailsend变量中选择2,然后把再在那个文件中找到
做好上面的几步,基本上就可以正常发送邮件了,如果你还是不能发送邮件请往下看
2、决定邮件发送系统是否正常的第二个因素,这个就是邮件接收方的问题了,现在市面上大部分免费邮箱都有防止*信的功能,是否能收到信要看接收方是否能够通过认证,有时候没有收到信很可能是接收方的邮件系统把你的信件过滤了,如果出现这种情况你可以统计一下那些信箱不能收到信,然后联系这些提供免费邮箱网站的相关部门,说明情况一般就可以解决了。
文件:include/sendmail.php
查找
fputs($fp, "DATA\r\n");
在其后添加sleep(1);
作用是暂停一秒后继续运行,如果1还是不行,就改成2,或者是3。关于论坛邮件系统的说明
邮件系统能不能正常使用,是由两个方面决定的
1、本身服务器是否支持发送邮件,不同的服务器对邮件发送的支持也是不同的,你可以根据自己的主机来配置论坛根目录下的mail_config.php文件中的$mailsend变量来决定,具体配置见下面的代码
$mailsend = 1; // 邮件发送方式 0=不发送任何邮件
// 1=通过 PHP 函数及 UNIX sendmail 发送(推荐此方式)
// 2=通过 SOCKET 连接 SMTP 服务器发送(支持 ESMTP 验证)
// 3=通过 PHP 函数 SMTP 发送 Email(仅 win32 下有效, 不支持 ESMTP)
如果你不清楚你的服务器是那种类型,可通过 utilities/testmail.php 进行测试,测试方法如下,把论坛压缩包里面的utilities/testmail.php文件打开,把里面的
$from = 'my@mydomain.com'; // 发件人邮件地址
$to1 = 'test@test.com'; // 测试单一邮件发送地址
$to2 = 'test1@test1.com, test2@test2.net'; // 测试邮件群体发送地址
这个部分进行配置,然后传到服务器执行,这样如果服务器支持邮件发送,那么你填写的地址将收到邮件,如果没有收到邮件则说明你的服务器不支持邮件发送。如果你的服务器不支持邮件发送,还有一个办法可以实现就是申请一个支持邮件发送的免费邮箱,然后在上面所说的配置论坛根目录下的mail_config.php文件中的$mailsend变量中选择2,然后把再在那个文件中找到
$mailcfg['server'] = 'smtp.discuzlab.com'; // SMTP 服务器
$mailcfg['port'] = '25'; // SMTP 端口, 默认不需修改
$mailcfg['auth'] = 1; // 是否需要 AUTH LOGIN 验证, 1=是, 0=否
$mailcfg['from'] = 'Discuz '; // 发信人地址 (如果需要验证,必须为本服务器地址)
$mailcfg['auth_username'] = 'xxx'; // 验证用户名
$mailcfg['auth_password'] = 'password'; // 验证密码
根据上面的信息解释,填写好信息,这样就可以发送邮件了。做好上面的几步,基本上就可以正常发送邮件了,如果你还是不能发送邮件请往下看
2、决定邮件发送系统是否正常的第二个因素,这个就是邮件接收方的问题了,现在市面上大部分免费邮箱都有防止*信的功能,是否能收到信要看接收方是否能够通过认证,有时候没有收到信很可能是接收方的邮件系统把你的信件过滤了,如果出现这种情况你可以统计一下那些信箱不能收到信,然后联系这些提供免费邮箱网站的相关部门,说明情况一般就可以解决了。