[原]打开Discuz的“接收新回复邮件通知”功能

   为更好的利用论坛的功能,Discuz可以使用Email发送回复通知。但该功能默认是关闭的,可以通过一些修改把其打开。
一、选择发送模式
Discuz可以支持三种发送邮件的功能,其中只有前两种,也就是“Unix sendmail直接发送”和“ESMTP发送”是可以在linux环境下使用的。Discuz推荐使用第一种方式。
但“Unix sendmail直接发送”最少有两个限制:

引用
1、必须打开本机的sendmail或postfix服务,但这可能是不必要的,也可能会带来安全问题;
2、使用自搭建的邮件服务器发送的邮件,通常都会被大型ISP的mail服务当垃圾邮件给过滤掉。

正因为如此,所以我决定采用ESMTP方式,而且其也可以使用第三方的邮件发送服务。
以我额外搭建的一台mailserver为例:

引用
域名是:mail.linuxfly.org
支持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';

详细的信息,请参考配置文件中的说明。
需要注意的一点是:
最后发送出去的邮件,其发送人并不是上述所设置的demo@linuxfly.org,而是您论坛的管理员邮箱。
也就是config.inc.php中的:

引用
$adminemail = 'admin@linuxfly.org';

这个请特别留意,否则,发送的邮件也有可能会被作为垃圾所过滤的。
三、测试
您可以有三种测试方法:

引用
1、打开注册验证,然后新注册一个用户,即会送到提示激活的邮件;
2、进入管理界面,在“系统工具”-“论坛通知”中发送邮件给指定的用户;
3、发一个新帖或回复,并选中“接收新回复邮件通知”,然后再回复该帖子,并进入管理界面,在“其他设置”-“计划任务”中,执行notify_daily.inc.php;

这三种方法都可以测试到邮件是否能正常发送。
若失败,可以在“系统工具”-“系统错误记录”中获取相关的信息。
四、把“接收新回复邮件通知”设置为默认选中
这可以通过修改模版实现。以默认的模版、linux平台为例,可以通过下面的命令获得需要修改的文件:

# cd templates/default
# 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

把类似:

引用
<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}
[转]Better PHP Practices
PHP设计模式——策略模式
PHP设计模式——命令模式
PHP设计模式——观察者模式
PHP设计模式——单元素模式

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/112727.html

(0)
上一篇 2021年8月27日
下一篇 2021年8月27日

相关推荐

发表回复

登录后才能评论