yii配合rabbitmq邮件消息列队

本文介绍了如何结合Yii PHP框架与RabbitMQ实现邮件消息队列的处理流程:首先,在业务逻辑中将邮件消息放入RabbitMQ队列;接着,通过计划任务定时从队列中取出消息并存储到数据库;最后,计划任务检查数据库中的未发送邮件,进行实际发送操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

思路:

 1、业务逻辑层里把邮件消息丢进rabbitmq

        //业务逻辑层
        $data = array(
            'subject' => 'confirm',//邮件模板名称          
            'level' => 10,//优先级
            'user_id' => 12,
           'params' => array(//替换邮件内变量的参数
                'username' => 'ezreal',
            )
        );
        $data = EmailTemplet::getTemplete($data);
        $extensions = get_loaded_extensions();
        if(in_array('amqp',$extensions)){
            RabbitMq_Base::setRabbitMq(json_encode($data), 'email-log');
        }
    //邮件模板配置
    public static function getTemplete($data)
    {
        //邮件模板配置
        $config = array(
            'verification' => 'Register successfully. Please complete verification.',
            'approve' => 'Please approve the client identification.',
            'checked' => 'Your verification has been approved. Please sign with the corresponding warehouse.',
            'not_checked' => 'Your verification has not been approved.',
            'confirm' => 'Please confirm the warehouse order on module client.',
            'confirmed' => 'Your warehouse order has been confirmed.',
            'not_confirmed' => 'Your warehouse order has not been confirmed.',
        );

        if(isset($config[$data['subject']]))
        {
            //获取邮件模板
           $EmailTemplete = EmailTemplete::model()->find('templet_name=:templet_name AND is_delete = 0', array(':templet_name'=>$config[$data['subject']]));
            if(!empty($EmailTemplete))
            {
                $data['content'] = $EmailTemplete->templet_content;
                //替换变量
                if(!empty($data['params']))
                {
                    foreach($data['params'] as $key => $value)
                    {
                        $data['content'] = str_replace("{". $key . "}", $value, $data['content']);
                    }
                }
            }
            $data['subject'] = $config[$data['subject']];
        }

        $User = User::model()->findByPk($data['user_id']);
        if(!empty($User))
        {
            $data['recipient'] = $User->email;
        }
        else
        {
            $data['recipient'] = '123456@qq.com';
        }
        unset($data['params']);
        unset($data['user_id']);
        return $data;
    }

 2、计划任务获取消息列队的消息,保存到数据库

 3、计划任务取数据库里未发送的消息内容,发送邮件






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值