DZ原生代码交流学习,买插件不如自己动手解决
 
发新帖
楼主: 天启
查看: 909|回复: 0

[教程] DZ邮件不能发送的原因和解决办法

[复制链接]
天启VIP6 发表于 2019-11-7 16:43:24 | 显示全部楼层
Discuz论坛邮件不能发送的原因:
文件:include/sendmail.php
查找
  1. fputs($fp, "DATA\r\n");
复制代码
在其后添加
  1. sleep(1);
复制代码
作用是暂停一秒后继续运行,如果1还是不行,就改成2,或者是3。
关于论坛邮件系统的说明
邮件系统能不能正常使用,是由两个方面决定的
1、本身服务器是否支持发送邮件,不同的服务器对邮件发送的支持也是不同的,你可以根据自己的主机来配置论坛根目录下的mail_config.php文件中的$mailsend变量来决定,具体配置见下面的代码
  1. $mailsend = 1;                // 邮件发送方式        0=不发送任何邮件
  2.                        //                1=通过 PHP 函数及 UNIX sendmail 发送(推荐此方式)
  3.                      //                2=通过 SOCKET 连接 SMTP 服务器发送(支持 ESMTP 验证)
  4.                    //                3=通过 PHP 函数 SMTP 发送 Email(仅 win32 下有效, 不支持 ESMTP)
复制代码
如果你不清楚你的服务器是那种类型,可通过 utilities/testmail.php 进行测试,测试方法如下,把论坛压缩包里面的utilities/testmail.php文件打开,把里面的

  1. $from = 'my@mydomain.com';                        // 发件人邮件地址
  2. $to1 = 'test@test.com';                                // 测试单一邮件发送地址
  3. $to2 = 'test1@test1.com, test2@test2.net';        // 测试邮件群体发送地址
复制代码
这个部分进行配置,然后传到服务器执行,这样如果服务器支持邮件发送,那么你填写的地址将收到邮件,如果没有收到邮件则说明你的服务器不支持邮件发送。
如果你的服务器不支持邮件发送,还有一个办法可以实现就是申请一个支持邮件发送的免费邮箱,然后在上面所说的配置论坛根目录下的mail_config.php文件中的$mailsend变量中选择2,然后把再在那个文件中找到
  1. $mailcfg['server'] = 'smtp.discuzlab.com';                // SMTP 服务器
  2. $mailcfg['port'] = '25';                                // SMTP 端口, 默认不需修改
  3. $mailcfg['auth'] = 1;                                // 是否需要 AUTH LOGIN 验证, 1=是, 0=否
  4. $mailcfg['from'] = 'Discuz <xxx@discuzlab.com>';        // 发信人地址 (如果需要验证,必须为本服务器地址)
  5. $mailcfg['auth_username'] = 'xxx';                // 验证用户名
  6. $mailcfg['auth_password'] = 'password';                // 验证密码
复制代码
根据上面的信息解释,填写好信息,这样就可以发送邮件了。
做好上面的几步,基本上就可以正常发送邮件了,如果你还是不能发送邮件请往下看
2、决定邮件发送系统是否正常的第二个因素,这个就是邮件接收方的问题了,现在市面上大部分免费邮箱都有防止*信的功能,是否能收到信要看接收方是否能够通过认证,有时候没有收到信很可能是接收方的邮件系统把你的信件过滤了,如果出现这种情况你可以统计一下那些信箱不能收到信,然后联系这些提供免费邮箱网站的相关部门,说明情况一般就可以解决了。

快速回复 返回顶部 返回列表