2009年4月3日 星期五

Discuz论坛邮件不能发送的原因解決~

好像少部份人有使用discuz論壇都會遇到這個問題

在官網解決的方式
文件: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.21cn.com';                // SMTP 服务器
$mailcfg['port'] = '25';                                // SMTP 端口, 默认不需修改
$mailcfg['auth'] = 1;                                // 是否需要 AUTH LOGIN 验证, 1=是, 0=否
$mailcfg['from'] = 'Discuz <myaccount@21cn.com>';        // 发信人地址 (如果需要验证,必须为本服务器地址)
$mailcfg['auth_username'] = 'myaccount';                // 验证用户名
$mailcfg['auth_password'] = 'password';                // 验证密码


根据上面的信息解释,填写好信息,这样就可以发送邮件了。
做好上面的几步,基本上就可以正常发送邮件了,如果你还是不能发送邮件请往下看
2)决定邮件发送系统是否正常的第二个因素,这个就是邮件接收方的问题了,现在市面上大部分免费邮箱都有防止*信的功能,是否能收到信要看接收方是否能够通过认证,有时候没有收到信很可能是接收方的邮件系统把你的信件过滤了,如果出现这种情况你可以统计一下那些信箱不能收到信,然后联系这些提供免费邮箱网站的相关部门,说明情况一般就可以解决了

確認空間商有無php sendmail答案當然是有

結果改了半天才發現原因出在後台:

新用戶註冊驗證:
選擇「無」用戶可直接註冊成功;選擇「Email 驗證」將向用戶註冊 Email 發送一封驗證郵件以確認郵箱的有效性;選擇「人工審核」將由管理員人工逐個確定是否允許新用戶註冊


 

 

沒選 Email 驗證信會寄不出

真是昏倒

1 則留言: