Laravel新用户注册电子邮件动态错误

时间:2018-03-26 09:37:01

标签: php laravel email

我有一个新用户注册功能,可以在注册时发送和发送电子邮件。 当我通过注册过程时,它应该存储一条记录,然后发送电子邮件。

所以我使用了'Registered'特质,但是我无法从我发送的数据中获取电子邮件地址

protected function registered(Request $request, $user)
{
        Mail::send('email.send', $user = ['name'=>$user['name'], 'surname'=>$user['surname'], 'email'=>$user['email']], function ($message) {
            $message->from('noreply@geniusmoney.co.uk');
            $message->sender('noreply@geniusmoney.co.uk');
            $message->to($user->email);
            $message->bcc('geniusteam@geniusmoney.co.uk');
            $message->subject('Welcome to Genius Money');
            $message->attach('attachments/contract10.pdf');
            $message->attach('attachments/entitychecklist.pdf');
            $message->from('noreply@geniusmoney.co.uk', 'Welcome to Genius Money');
        });
}

我的错误是:

  

未定义的变量:user和指向我的$ message->到

3 个答案:

答案 0 :(得分:1)

您忘记使用use($user)。在Mail::send

之后在function($message)中添加

尝试以下代码:

protected function registered(Request $request, $user)
{
    Mail::send('email.send', $user = ['name'=>$user['name'], 'surname'=>$user['surname'], 'email'=>$user['email']], function ($message) use($user) {
        $message->from('noreply@geniusmoney.co.uk');
        $message->sender('noreply@geniusmoney.co.uk');
        $message->to($user->email);
        $message->bcc('geniusteam@geniusmoney.co.uk');
        $message->subject('Welcome to Genius Money');
        $message->attach('attachments/contract10.pdf');
        $message->attach('attachments/entitychecklist.pdf');
        $message->from('noreply@geniusmoney.co.uk', 'Welcome to Genius Money');
    });
}

希望这会解决它!

答案 1 :(得分:0)

闭包中使用的变量需要声明为参数或使用use关键字声明。

使用use关键字可以对外部作用域中声明的变量进行闭包访问。 e.g。

Mail::send(
    'email.send', 
    $user = array_only($user, ['name', 'surname', 'email']),
    function ($message) use (&$user) {
      ...
    }
);

答案 2 :(得分:0)

你需要在mail函数回调中使用$ user, 替换

function ($message) {

function ($message) use ($user) {