为解决公告邮件超时问题,替代公告邮件-发送全体通知

① 进入/app/Command目录,编辑XCat.php,插入如下代码:

    case("sendUserMessage"):
        return DailyMail::sendUserMessage();
    case("sendAdminMessage"):
        return DailyMail::sendAdminMessage();

② 编辑DailyMail.php,在63行插入=64行 public static function reall ()之上 如下代码:

    public static function sendUserMessage() #sendUserMessage,给用户发送通知
    {
        $users = User::all();
        
        foreach ($users as $user) {
            if ($user->email_Notification==0) {
                #管理员账户email_Notification设为1,用户设为0
                echo "Sending:".$user->id."... Done.\r\n";
                $subject = "全体通知"; #邮件标题
                $to = $user->email;

                try {
                    Mail::send($to, $subject, 'news/Message.tpl', [
                        "user" => $user
                    ], [
                    ]);
                } catch (Exception $e) {
                    echo $e->getMessage();
                }
            }
        }
    }
    
    public static function sendAdminMessage() #sendAdminMessage,给管理员发送通知,用于测试发送效果
    {
        $users = User::all();
        
        foreach ($users as $user) {
            if ($user->email_Notification==1) {
                #管理员账户email_Notification设为1,用户设为0
                echo "Sending:".$user->id."... Done.\r\n";
                $subject = "全体通知"; #邮件标题
                $to = $user->email;

                try {
                    Mail::send($to, $subject, 'news/Message.tpl', [
                        "user" => $user
                    ], [
                    ]);
                } catch (Exception $e) {
                    echo $e->getMessage();
                }
            }
        }
    }

③ 进入/resources/email/news文件夹,新建Message.tpl,内容如下=<body>即为通知内容:

<!DOCTYPE html>
<html>

<head>
  <meta name="viewport" content="width=device-width"/>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>

<body>
<p>您好,{$user->user_name}。</p>
</body>

</html>

④ 给user表新增一个字段有则免,
进入“user” > 上方导航栏进入“结构” > 添加1个字段于最后之后 > 执行;
名字填email_Notification,默认选定义,下方填入0,点击保存

⑤ 把自己的email_Notification值改成1,
用搜索,email一栏填写管理员账户邮箱,然后点击执行

⑥ ssh进入网站根目录
给管理员发送通知,用于测试发送效果:

php xcat sendAdminMessage

给用户发送通知:

php xcat sendUserMessage

添加新评论