Laravel使用队列后台发送邮件

使用Redis队列方式

textlaravel.cc\laravel5\config\queue.php

修改为Redis队列方式
'default' => env('QUEUE_CONNECTION', 'redis'),

在这里插入图片描述
在没有开启队列监听,或者处理第一个队列任务命令,那么队列任务是不会执行的。

// 开启队列监听器
php artisan queue:listen
// 只处理第一个队列任务
php artisan queue:work

1 创建一个job

php artisan make:job SendEmail

然后在app/jobs目录下就有一个类了,该类有一个handle方法,该方法就是具体要在队列中处理的任务逻辑。

<?php

namespace App\Jobs;

use App\Mail\SendReportReply;
use App\User;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;


class SendEmail implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    protected $user;
    # 实例化
    public function __construct(User $user)
    {
        $this->user = $user;
    }

    # 执行队列的方法 比如发送邮件
    public function handle()
    {
      $user = $this->user;
	 # laravel自带Mail类所以直接用就好了
     \Mail::send('email.test',['name'=>'textname'],function($message){
        $to = '2624466181@qq.com';
        $message ->to($to)->subject('测试邮件');
    });

      echo $user->name;

    }
}

Mail::send 需要传递三个参数

  • 第一个是邮件视图
  • 第二个是传入视图的数据
  • 第三个是一个闭包,该闭包中定义了收件人、抄送人(如果有的话)、邮件主题、附件等信息。

修改 queue 相关代码后,必须要使用 php artisan queue:restart 来重启队列服务,否则所做的修改可能不会生效(没法重现了,按理说应该和使用 queue:listen 或 queue:work 有关,不过最好还是重启;可能和 supervisor 开启多个 queue:work 进程也有关系,本地测试的时候只有一个进程)。

文档:
在这里插入图片描述

2 邮件模版

在这里插入图片描述

3 控制器路由

<?php

namespace App\Http\Controllers\Text;

use App\Http\Controllers\Controller;
use App\Jobs\SendEmail;
use App\User;
use Illuminate\Http\Request;

class EmailTextController extends Controller
{
    public function emailtxt()
    {
    	 // \Mail::send('email.test',['name'=>'textname'],function($message){
      //       $to = '2624466181@qq.com';
      //       $message ->to($to)->subject('测试邮件');
      //   });

    	$user = User::find(1);
     //    $this->dispatch(new SendEmail($user));
        
    	dispatch(new SendEmail($user));
        echo "SendEmail";
    }
}

// 这个任务将被分发到默认队列...
Job::dispatch();

// 这个任务将被发送到「emails」队列...
Job::dispatch()->onQueue('emails');

路由

Route::get('emailtxt', 'Text\EmailTextController@emailtxt');

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知其黑、受其白

喝个咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值