被折腾到吐血的邮件通知

by 叶开楗 · 2021-04-28 · 957 次阅读

前言

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

寻找原因

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

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

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

 title=

折腾中

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

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

 title= title=

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


        if(strpos($content,'@夏目贵志') !== false){ 
        $queue\['mail_to'\]="6@9i3.cn";
        }else{
        }        

 title=

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

 title=

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

     //邮件通知  
     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';

 title=

这个是选择回复楼层的

$data\['pid'\]\])

 title=

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

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

 title=

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

 title=

后续

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

版权声明:本文使用CC BY-NC-ND 4.0许可

文章发表于:2021-04-28 17:10:53