为什么未定义变量:发送电子邮件 laravel 5.3



我的代码是这样的:

public function handle(UserRegisteredEvent $event)
    {
        $data = $event->data;
        $name = $data['name'];
        $email = $data['email']; //tri@gmail.com
        Mail::send('emails.welcome', ['name' => $name], function($m){
            $m->to($email)
              ->subject('Transaction Details');
        });
    }

执行时,存在如下错误:

Undefined variable: email

$email变量在邮件关闭函数中无法识别,您必须使用 use 关键字将其显式传递给闭包函数,如下所示:

public function handle(UserRegisteredEvent $event)
{
    $data = $event->data;
    $name = $data['name'];
    $email = $data['email']; //tri@gmail.com
    Mail::send('emails.welcome', ['name' => $name], function($m) use ($email) {
        $m->to($email)
          ->subject('Transaction Details');
    });
}

在使用函数闭包时,您需要使用 use 才能在内部使用变量。

试试这个:

Mail::send('emails.welcome', ['name' => $name], function($m) use ($email) {
            $m->to($email)
              ->subject('Transaction Details');
        });

最新更新