0

我将Laravel 10作为Fortify的API后端。重置密码时,我想将HTML内容(从数据库检索)发送到电子邮件。电子邮件应该排队,可能通过作业表。

Fortify服务提供商,我试过了到邮件使用方法。

重置密码::toMailUsing(函数(用户$User,字符串$token){return(new ResetEmail($user,$token))->onQueue('send-email');});

但这封电子邮件需要排队并直接发送。

仅供参考:我已经在跑步了发送电子邮件排队发送其他电子邮件,它工作得很好(通过乔布斯)。是的,我确实在.env中设置了这个QUEUE_CONNECTION=数据库

在laravel资料中,我发现:

if($message instanceof Mailable){返回$message->send($this->mailer);}

这应该用于处理排队的可邮寄还有,对吗?还是我走错了方向?

资料来源:10.x/src/Illuminate/Notifications/Channels/MailChannel.php#L63

1答案1

重置为默认值
0

修复了这些更改。

  1. 已使用创建通知表
php artian通知:表php工匠迁移
  1. 已创建自定义通知类
<?php(电话)命名空间应用程序\通知;使用App\Models\User;使用App\Mail\ResetEmail;使用Illuminate\Bus\Queueable;使用Illuminate\Mail\Mailable;使用照明\通知\通知;使用Illuminate\Contracts\Queue\ShouldQueue;类ResetEmailNotificationQueued扩展了Notification实现ShouldQueue{使用Queueable;/***创建新的通知实例。*/公共函数__construct(私有字符串$token){$this->onQueue(“发送电子邮件”);}/***获取通知的传递通道。**@return数组<int,string>*/公共函数via(object$notiable):数组{return[邮件];}/*** *@param用户$可通知* *获取通知的邮件表示。*/公共函数toMail(对象$notiable):Mailable{return new ResetEmail($notiable,$this->token);}}
  1. 更新型号\User.php
公共函数sendPasswordResetNotification($token){$this->notify(新的ResetEmailNotificationQueued($token));}
  1. 运行队列
php artian队列:listen--queue=default,send-email

干杯:)。

你的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.