我尝试将电子邮件发送到队列中,但无法正常工作。
Mail::queue('emails.mailsubscribe', ['email'=>$email],
function($message) use($email)
{
$message->to('user@xxx.in')->subject('Subscribe: XXXXX');
});
Run Code Online (Sandbox Code Playgroud)
为了进行Laravel 5/6完整排队,您需要执行以下步骤:
php artisan queue:table (工作)php artisan queue:failed-table (对于失败的工作)php artisan migrateQUEUE_DRIVER=databasephp artisan config:cachephp artisan queue:work database --tries=1在所有未完成的尝试之后,它将注册在失败的作业表中) 由于发送电子邮件会大大延长应用程序的响应时间,因此许多开发人员选择将电子邮件排入队列以进行后台发送。Laravel使用其内置的统一队列API使此操作变得容易。要对邮件进行排队,请在指定邮件的收件人之后使用Mail Facade上的queue方法:
Mail::to($request->user())
->cc($moreUsers)
->bcc($evenMoreUsers)
->queue(new OrderShipped($order));
Run Code Online (Sandbox Code Playgroud)
此方法将自动处理将作业推送到队列,以便在后台发送消息。当然,在使用此功能之前,您将需要配置队列。
如果您希望延迟发送排队的电子邮件,则可以使用后面的方法。作为第一个参数,后一种方法接受DateTime实例,该实例指示何时发送消息:
$when = now()->addMinutes(10);
Mail::to($request->user())
->cc($moreUsers)
->bcc($evenMoreUsers)
->later($when, new OrderShipped($order));
Run Code Online (Sandbox Code Playgroud)
如果您有希望始终排队的可邮件类,则可以在该类上实现ShouldQueue契约。现在,即使您在邮寄时调用send方法,由于可实现的协定,可邮寄邮件仍将排队:
use Illuminate\Contracts\Queue\ShouldQueue;
class OrderShipped extends Mailable implements ShouldQueue
{
//
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5964 次 |
| 最近记录: |