目前我是用这种写法,send 之前先创建一条记录,然后把记录自增 ID 传入到 这个 activeUser 里:
$logId = Helpers::addEmailLog($request->username, '注册激活', '请求地址:' . $activeUserUrl);
Mail::to($request->username)->send(new activeUser($logId, $activeUserUrl));
抽象于 ShouldQueue,所以其实是走队列发送的邮件,我是想把
$logId = Helpers::addEmailLog($request->username, '注册激活', '请求地址:' . $activeUserUrl);
这行代码给加入到下面这个 build 里,但是貌似行不通,不晓得有什么办法实现?反正就是想把上面个两行控制器代码简化成一行
<?php
namespace App\Mail;
use App\Http\Models\EmailLog;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
class activeUser extends Mailable implements ShouldQueue
{
use Queueable, SerializesModels;
protected $id; // 邮件记录 ID
protected $activeUserUrl; // 激活用户 URL
public function __construct($id, $activeUserUrl)
{
$this->id = $id;
$this->activeUserUrl = $activeUserUrl;
}
public function build()
{
return $this->view('emails.activeUser')->subject('激活账号')->with([
'activeUserUrl' => $this->activeUserUrl
]);
}
// 发件失败处理
public function failed(\Exception $e)
{
EmailLog::query()->where('id', $this->id)->update(['status' => -1, 'error' => $e->getMessage()]);
}
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.