Laravel:如何在Blade邮件视图中获取收件人邮箱地址?
如何在Laravel Blade邮件视图中直接获取收件人邮箱地址
当然可以实现!不用每次手动把收件人邮箱塞进$data里反复传递,我们可以通过Laravel的Mailable类来优雅解决这个问题,让你在Blade视图(包括布局模板)里直接用{{ $to }}拿到收件人地址。
具体实现步骤
修改你的Mailable类
打开你的ActivationEmail类(或者你自定义的Mailable类),在build方法里自动获取收件人信息并传递给视图:namespace App\Mail; use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; class ActivationEmail extends Mailable { use SerializesModels; public $data; public function __construct($data) { $this->data = $data; } public function build() { // 获取第一个收件人的邮箱(如果有多个收件人,可按需遍历$this->to集合) $recipientEmail = $this->to->first()->email; // 将收件人邮箱传递给视图(包括布局模板) return $this->view('emails.activation') ->with('to', $recipientEmail); // 如果是Markdown邮件,替换成下面的代码: // return $this->markdown('emails.activation') // ->with('to', $recipientEmail); } }在Blade视图中直接使用
现在不管是在邮件内容视图还是布局模板里,都可以直接用{{ $to }}调用收件人邮箱了,比如退订链接:<a href="{{ route('unsubscribe', ['email' => $to]) }}">点击退订</a>
扩展优化(可选)
如果你的项目里有多个Mailable类,还可以创建一个基类Mailable,把提取收件人邮箱的逻辑写到基类的build方法里,其他Mailable类继承这个基类,就能让所有邮件都自动具备这个能力,不用重复写代码。
内容的提问来源于stack exchange,提问作者Tony Sawlwin
相关产品推荐
相关产品推荐

