Aug
15
[原]打开Discuz的“接收新回复邮件通知”功能
为更好的利用论坛的功能,Discuz可以使用Email发送回复通知。但该功能默认是关闭的,可以通过一些修改把其打开。
一、选择发送模式
Discuz可以支持三种发送邮件的功能,其中只有前两种,也就是“Unix sendmail直接发送”和“ESMTP发送”是可以在linux环境下使用的。Discuz推荐使用第一种方式。
但“Unix sendmail直接发送”最少有两个限制:
正因为如此,所以我决定采用ESMTP方式,而且其也可以使用第三方的邮件发送服务。
以我额外搭建的一台mailserver为例:
二、设定mailserver设置
修改mail_config.inc.php文件为:
详细的信息,请参考配置文件中的说明。
需要注意的一点是:
最后发送出去的邮件,其发送人并不是上述所设置的demo@linuxfly.org,而是您论坛的管理员邮箱。
也就是config.inc.php中的:
这个请特别留意,否则,发送的邮件也有可能会被作为垃圾所过滤的。
三、测试
您可以有三种测试方法:
这三种方法都可以测试到邮件是否能正常发送。
若失败,可以在“系统工具”-“系统错误记录”中获取相关的信息。
四、把“接收新回复邮件通知”设置为默认选中
这可以通过修改模版实现。以默认的模版、linux平台为例,可以通过下面的命令获得需要修改的文件:
可以获知,需要修改这几个文件:
把类似:
修改为:
一、选择发送模式
Discuz可以支持三种发送邮件的功能,其中只有前两种,也就是“Unix sendmail直接发送”和“ESMTP发送”是可以在linux环境下使用的。Discuz推荐使用第一种方式。
但“Unix sendmail直接发送”最少有两个限制:
引用
1、必须打开本机的sendmail或postfix服务,但这可能是不必要的,也可能会带来安全问题;
2、使用自搭建的邮件服务器发送的邮件,通常都会被大型ISP的mail服务当垃圾邮件给过滤掉。
2、使用自搭建的邮件服务器发送的邮件,通常都会被大型ISP的mail服务当垃圾邮件给过滤掉。
正因为如此,所以我决定采用ESMTP方式,而且其也可以使用第三方的邮件发送服务。
以我额外搭建的一台mailserver为例:
引用
域名是:mail.linuxfly.org
支持ESMTP功能
提供给Discuz论坛使用的用户和密码都是:demo
支持ESMTP功能
提供给Discuz论坛使用的用户和密码都是:demo
二、设定mailserver设置
修改mail_config.inc.php文件为:
引用
$mailsend = 2;
$mailcfg['server'] = 'mail.linuxfly.org'
$mailcfg['port'] = '25';
$mailcfg['auth'] = 1;
$mailcfg['from'] = 'Demo <demo@linuxfly.org>';
$mailcfg['auth_username'] = 'demo@linuxfly.org';
$mailcfg['auth_password'] = 'demo';
$mailcfg['server'] = 'mail.linuxfly.org'
$mailcfg['port'] = '25';
$mailcfg['auth'] = 1;
$mailcfg['from'] = 'Demo <demo@linuxfly.org>';
$mailcfg['auth_username'] = 'demo@linuxfly.org';
$mailcfg['auth_password'] = 'demo';
详细的信息,请参考配置文件中的说明。
需要注意的一点是:
最后发送出去的邮件,其发送人并不是上述所设置的demo@linuxfly.org,而是您论坛的管理员邮箱。
也就是config.inc.php中的:
引用
$adminemail = 'admin@linuxfly.org';
这个请特别留意,否则,发送的邮件也有可能会被作为垃圾所过滤的。
三、测试
您可以有三种测试方法:
引用
1、打开注册验证,然后新注册一个用户,即会送到提示激活的邮件;
2、进入管理界面,在“系统工具”-“论坛通知”中发送邮件给指定的用户;
3、发一个新帖或回复,并选中“接收新回复邮件通知”,然后再回复该帖子,并进入管理界面,在“其他设置”-“计划任务”中,执行notify_daily.inc.php;
2、进入管理界面,在“系统工具”-“论坛通知”中发送邮件给指定的用户;
3、发一个新帖或回复,并选中“接收新回复邮件通知”,然后再回复该帖子,并进入管理界面,在“其他设置”-“计划任务”中,执行notify_daily.inc.php;
这三种方法都可以测试到邮件是否能正常发送。
若失败,可以在“系统工具”-“系统错误记录”中获取相关的信息。
四、把“接收新回复邮件通知”设置为默认选中
这可以通过修改模版实现。以默认的模版、linux平台为例,可以通过下面的命令获得需要修改的文件:
# cd templates/default
# grep 'post_email_notify' *
# grep 'post_email_notify' *
可以获知,需要修改这几个文件:
引用
forumdisplay.htm
post_newreply.htm
post_newthread.htm
space_topic.htm
supesite_forumdisplay.htm
supesite_post_newreply.htm
supesite_post_newthread.htm
supesite_viewthread.htm
viewthread.htm
post_newreply.htm
post_newthread.htm
space_topic.htm
supesite_forumdisplay.htm
supesite_post_newreply.htm
supesite_post_newthread.htm
supesite_viewthread.htm
viewthread.htm
把类似:
引用
<input class="checkbox" type="checkbox" name="emailnotify" value="1"> {lang post_email_notify}
修改为:
引用
<input class="checkbox" type="checkbox" name="emailnotify" value="1" checked> {lang post_email_notify}
至于论坛email通知功能,从我开始测试的5.0版本到现在的6.0版本,基本上都是挺正常的。需要明白的是,discuz很大一部分的管理工作是基于计划任务的,email通知功能也是这样,回复了帖子后,email不会马上发送的,默认是1天发一次,在后台可以看到,和设置的。
另外,看源码可以知道,自己发的帖子,自己回复也不会生成email的。也就是说,发帖和回帖的人需要不同的用户。
如果还是不行,可能就要看看后台SMTP处理的日志了,可能是使用的SMTP发送方式不对,或对方拒收了邮件。
(例如,使用21cn.com的SMTP,发给Gmail.com或yahoo.com都会被拒收的,这不是discuz可以控制的)
实在弄不清楚问题,可再联系我。