4

被折腾到吐血的邮件通知

 3 years ago
source link: https://qq.md/posts/113
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

被折腾到吐血的邮件通知

2周前 (04-28) 744℃ 0赞

从昨天开始就发现邮件通知有问题,有时候有人评论我能收到,有时候又不行,这就很尴尬!

凡哥 也给推测大概有问题的地方,于是我用了“BCompare” 进行比较 ,我以为 ` foreach ($data as $k => $v) { `  这里有问题,

凡哥说:” foreach和发邮件选错对象这事没关系,Forech 是循环替换邮件里面的些字符的,你看str_replace就大概知道了“ 那排除

@夏目贵志:你找到前端和后端的 Comment.php文件,分别在【application\frontend\logic】和【application\backend\logic】
下有这样一句:$tomail = Core::loadModel("Comment")->where(["id"=>$data['pid']])->value('mail');
里面的$data['pid']是获取被回复人的邮箱,被回复人就是刚提交的这条回复的父级评论,
后端和前端这两个代码写的是一样,肯定有一个不对,我本地安装的,邮件怎么也发不成功,没办法测试,你要是看到了,先试试。明天我重新配置下我本地的邮箱,看看是哪个的问题。

2811f63b55d872d64a23729683d5fd3d.png

然后我又折腾了一下午,发送邮箱从 QQ邮箱/谷歌邮箱/live.cn邮箱 到现在比较稳定的阿里云邮箱,这时候文章评论都能收到了,但是又出现 `楼层回复` 问题了。

博友评论 -> 我评论  这时候正常,然后 博友回复->我  变成了他自己回复自己,没办法又只能找原因排查了。又是一顿折腾,我用小号和自己互相评论邮件通知正常!

847c3e0f74354535cc77ed7696b17ea4.png124bbd6498b0a706a624bc0a15349f7d.png

这里我是添加了一个代码,既然你回复管理员会变成回复自己,那我就给你截断增加个判断,我和小号测试正常。

       if(strpos($content,'@夏目贵志') !== false){ 
        $queue['mail_to']="[email protected]";
        }else{
        }       

54e7c6384fa693d55dad9789ff8a3bff.png

然后又去”我将要远行  “和凡哥互相测试一下,变成了我是凡哥了,我又又又搞不懂了!!

7b834a3594641c37dc3eb5d15f5920be.png

无奈继续寻找,又分析下面的代码

  //邮件通知  
     private  function send($data){
        $site_url = Core::loadAction("Setting/getSetting",['column'=>"site_host"]);
        $site_name = Core::loadAction("Setting/getSetting",['column'=>"site_name"]);
        if ($data['pid'] != 0) {    
            $send_scene = '2';
            $reply = Core::loadModel("Comment")->where(["id"=>$data['pid']])->value('comment');
            $tomail = Core::loadModel("Comment")->where(["id"=>$data['pid']])->value('mail');
            $data['reply'] = $reply;
            }else{
            $tomail = config("config.toemail");
            $send_scene = '1';
        }

这个是选择通知模板的

send_scene = '2'; $send_scene = '1';

891cf85dfc96279d6e2e6696a592dd80.png

这个是选择回复楼层的

$data['pid']])

0ac7f31c49fe6370c8f74e0d36cd197d.png

于是我又想是不是 这个=0 导致判断ID出现问题 我就改成 > 大于号 大于 0 判断 ,自己测试又和小号测试了一下没问题。

if ($data['pid'] != 0) {

4e7a3864b2df9d2863b632624de1681a.png

然后去找凡哥互相测试一下,好家伙又变成他自己回复自己了!!

6c0c4658806a6febd1894e1f0acc26e1.png

耽误凡哥那么过的时间!!自己都不好意思了,只能等我在看看哪里有问题吧!!!!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK