douxiji8707
douxiji8707
2018-03-26 09:37
浏览 57
已采纳

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

I have a function of new user sign up that sends and email on registration. When i go via the registration process it should store a record and then fire the email.

So i have used the 'Registered' trait which is firing fine but I cant get the email address to pull from the data i have sent in

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');
        });
}

My error is:

Undefined variable: user and that points to my $message->to

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • douliao1911
    douliao1911 2018-03-26 09:42
    已采纳

    You are forgot to use use($user). Add it in Mail::send after function($message)

    Try below code:

    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');
        });
    }
    

    Hope this will fixed it!

    点赞 评论
  • duangelin7513
    duangelin7513 2018-03-26 09:41

    Variables used in a closure need to be either declared as arguments or declared using the use keyword.

    Using the use keyword gives the closure access to variables declared in an outer scope. e.g.

    Mail::send(
        'email.send', 
        $user = array_only($user, ['name', 'surname', 'email']),
        function ($message) use (&$user) {
          ...
        }
    );
    
    点赞 评论
  • dphe5602
    dphe5602 2018-03-26 09:46

    you need to use $user inside the mail function callback, replace

    function ($message) {
    

    with

    function ($message) use ($user) {
    
    点赞 评论

相关推荐