请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

Discuz! 官方站

 找回密码
 立即注册

QQ登录

只需一步,快速开始

Discuz! X 最新研发动态 通过这个窗口,关注跟踪我们的研发进展 Discuz! 开发技术文库 - 给官方提建议

Discuz! X2 正式版下载 帮助网站实现一站式服务  商业支持服务咨询 下载 - 安装 - 常见问题 - 转换 - 讨论 - 购买

2012站长年会开启报名 限量船票免费发放 Discuz!十大荣誉用户评选 - Discuz!NT3.6发布 漫游引入QQ空间游戏 -一骑新区横扫三国-5d6d免费论坛

查看: 3399|回复: 14

修正Discuz 5.5计划任务邮件通知的Bug [复制链接]

Rank: 2

UID
50289
积分
164
帖子
17
威望
0
在线时间
0 小时
注册时间
2004-1-9
发表于 2007-8-20 17:43:49 |显示全部楼层
我这里提到的问题,是指在已经配置好Email(邮件)发送功能后,存在的一个Bug:
也就是手动执行计划任务发送邮件正常,而由系统调用计划任务会发送带空的《》标题的邮件。
可通过下面的方式修正,并增加把新帖子内容信息一同附加到邮件中的功能。
一、现象描述
错误的情况:
但如果有系统自行通过计划任务发送“主题回复通知”,则会出现下面的问题:

二、修正并补充
经过多次的测试及观察Discuz中的脚本,基本可以判断,导致问题的原因,是由于计划任务中,并不能把notify_daily.inc.php脚本获取的变量附加到模版文件emails.lang.php中,所以才出现空变量的问题。而后台由admincp.php手动执行的脚本,是可以正确赋值的。
文件的路径在这里:
./include/crons/notify_daily.inc.php

1、增加message信息
把原来的:
$query = $db->query("SELECT t.tid, t.subject, t.author, t.lastpost, t.lastposter, t.views, t.replies, m.username, m.email, m.uid
    FROM {$tablepre}subscriptions s, {$tablepre}members m, {$tablepre}threads t
    WHERE s.lastpost>s.lastnotify AND m.uid=s.uid AND t.tid=s.tid");

修改为:
$query = $db->query("SELECT t.tid, t.subject, t.author, t.lastpost, t.lastposter, t.views, t.replies, m.username, m.email, m.uid, o.message
    FROM {$tablepre}subscriptions s, {$tablepre}members m, {$tablepre}threads t, {$tablepre}posts o
    WHERE s.lastpost>s.lastnotify AND m.uid=s.uid AND t.tid=s.tid AND s.tid=o.tid AND s.lastpost=o.dateline");

其作用是,从cdb_posts表中,获取message信息,以便后面附加到邮件中。
2、修改Bug
把原来的:
sendmail(implode(',', $sub['emails']), 'email_notify_subject', 'email_notify_message');

注释掉或删除,然后加入:
$subject =   "《$thread[subject]》新回复通知";
$message =   "
    您好,
    这封信是由 $bbname 发送的。

     您收到这封邮件,是因为您订阅的以下主题在最近有了新的回复,请您留意。
     如果您并没有访问过我们的论坛,或没有进行上述操作,请忽略这封邮件。
     您不需要退订或进行其他进一步的操作。

      ----------------------------------------------------------------------
      主题信息
      ----------------------------------------------------------------------
      URL:  {$boardurl}viewthread.php?tid=$thread[tid]
      标题: $thread[subject]
      作者: $thread[author]
      查看: $thread[views]
      回复: $thread[replies]
      内容:
      $thread[message]

       该主题最近一次由 $thread[lastposter] 于 $thread[lastpost] 回复。

        您订阅的主题可能有更多的回复,为了及时提醒您的留意,我们将会再一定时间内
        发送新回复通知。若在此期间如果还有新回复,将在下次一并通知。
        若由此给您的邮箱带来负担,请谅解。当然,您也可暂时取消“回复通知”功能。



           此致

            $bbname 管理团队.
            $boardurl";

    sendmail(implode(',', $sub['emails']), $subject, $message);

保存即可。
3、结果
修改后,计划任务和手动执行的结果如下:


三、补充说明
1、虽然通过上面的方法可以解决该Bug,但更好的方法应该是修改Discuz中引用计划任务的脚本,但由于我对php不熟,而且也没时间详细分析Discuz的架构,暂时只能做到这样了;
2、从现象来分析,该问题可能存在于其他从计划任务调用模版的脚本中,例如:birthdays_daily.inc.php,但时间关系,没有仔细调整;
3、到目前为止,该Bug存在于Discuz 2.5到最新的6.0 RC1版,希望官方能作出修正。
4、更信息的信息,可见:
http://www.linuxfly.org/post/150.htm

Rank: 6Rank: 6

UID
421293
积分
1231
帖子
1228
威望
10
在线时间
68 小时
注册时间
2006-8-16
发表于 2007-9-19 08:29:29 |显示全部楼层
谢谢。再弄呢 :)

使用道具 举报

Rank: 2

UID
815246
积分
78
帖子
94
威望
0
在线时间
1 小时
注册时间
2007-9-18
发表于 2008-2-21 11:08:56 |显示全部楼层
請問
在後台管理的介面下
如何找到
./include/crons/notify_daily.inc.php
這個擋呢?

使用道具 举报

Rank: 2

UID
815246
积分
78
帖子
94
威望
0
在线时间
1 小时
注册时间
2007-9-18
发表于 2008-3-6 22:39:04 |显示全部楼层
请问有6.0.0的解决方式吗?

使用道具 举报

Rank: 2

UID
882472
积分
90
帖子
107
威望
0
在线时间
1 小时
注册时间
2008-1-18
发表于 2008-4-9 14:09:58 |显示全部楼层
原帖由 花枝 于 2008-3-6 22:39 发表
请问有6.0.0的解决方式吗?
请问有6.0.0的解决方式吗?

使用道具 举报

Rank: 2

UID
815246
积分
78
帖子
94
威望
0
在线时间
1 小时
注册时间
2007-9-18
发表于 2008-4-16 15:33:19 |显示全部楼层
目前6.1.0的新回覆郵件通知
這個功能似乎也還沒修正

因為訂閱後
所接收到的文章一樣沒有完整的tid
這也顯示這個BUG
官方網站一直為正視

使用道具 举报

Rank: 2

UID
603976
积分
145
帖子
154
威望
2
在线时间
0 小时
注册时间
2006-12-30
发表于 2008-4-17 11:52:53 |显示全部楼层
谢谢楼主,这真是太有用了,帮你顶一下

使用道具 举报

Rank: 2

UID
603976
积分
145
帖子
154
威望
2
在线时间
0 小时
注册时间
2006-12-30
发表于 2008-4-17 11:54:20 |显示全部楼层
顺便说一下,貌似我没有执行2、修改Bug这一步就成功了

使用道具 举报

Rank: 1

UID
473927
积分
12
帖子
15
威望
0
在线时间
0 小时
注册时间
2006-10-28
发表于 2008-5-21 14:42:39 |显示全部楼层
真的吗?太好了,非常喜欢

使用道具 举报

Rank: 1

UID
510679
积分
21
帖子
8
威望
0
在线时间
0 小时
注册时间
2006-12-6
发表于 2008-5-23 05:12:49 |显示全部楼层
有理,顶~~,此帖绝对要留名!强人辈出!

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

fastpost

手机版|Archiver|北京康盛新创科技有限责任公司 ( 京ICP证110024号|京网文[2011]0019-007号 )  

GMT+8, 2012-2-13 08:22 , Processed in 0.154168 second(s), 14 queries , Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部