Laravel 8 如何将控制器参数传递到邮件类对应的视图模板
Laravel 8 邮件传递用户凭据解决方案
实现步骤
1. 调整邮件类 App\Mail\RegisterMail
首先在邮件类中定义公共属性接收传入的用户数据,Laravel的Mailable类的公共属性会自动传递到关联的视图中:
<?php namespace App\Mail; use Illuminate\Bus\Queueable; use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; class RegisterMail extends Mailable { use Queueable, SerializesModels; // 定义公共属性存储用户登录凭据 public $userData; public function __construct($userData) { $this->userData = $userData; } public function build() { return $this->markdown('emails.register') ->subject('注册SLeAgro农产品分销系统通知'); } }
2. 修改控制器调用逻辑
实例化邮件类时将组装好的$data1数组作为参数传入:
$data1 = [ 'email' => $request->email, 'password' => $code ]; // 传入用户数据实例化邮件类 $mail = new \App\Mail\RegisterMail($data1); \Mail::to($request->email)->send($mail);
3. 调整邮件模板输出变量
在视图中直接调用邮件类的公共属性输出对应内容即可:
@component('mail::message') # 欢迎使用SleAgro农产品管理系统 您可以使用以下凭据登录系统: 用户名:{{ $userData['email'] }} <br> 密码:{{ $userData['password'] }} @component('mail::button', ['url' => 'http://127.0.0.1:8000/login']) 立即登录 @endcomponent 谢谢,<br> {{ config('app.name') }} @endcomponent
安全提示:明文发送初始密码存在安全风险,建议新增首次登录强制修改密码的逻辑,降低账号泄露风险。
内容的提问来源于stack exchange,提问作者Nipun Sachinda
相关产品推荐
相关产品推荐

