Laravel 5 - >将第二个参数传递给Mail :: send方法

时间:2016-03-09 18:26:55

标签: php email laravel-5

我想修改AuthController中的create方法。带有验证链接的邮件应在发送注册表后发送给用户电子邮件。它差不多完成了,但我遇到了问题,将用户详细信息传递给函数。

这就是我现在所拥有的:

Mail::send('mails.registrierung', $data, function($message){
    $message->from('registrierung@junperbo.de', 'Registrierung');
    $message->to('email@yxz.de');
});

但很明显,硬编码的电子邮件无效。所以我想将创建的用户传递给该函数。我尝试在函数内global $user(没有成功)。我还尝试传递第二个参数,如:

Mail::send('mails.registrierung', $data, function($message, $user) {
    $message->from('registrierung@junperbo.de', 'Registrierung');
    $message->to($user->email);
});

结果是此错误消息(对于Mail :: send(....)行):

  

缺少参数2   应用\ HTTP \控制器\验证\ AuthController ::应用\ HTTP \控制器\验证{闭合}()

我的整个创建方法:

protected function create(array $data)
{
    $user = User::create([
        'benutzername' => $data['benutzername'],
        'email' => $data['email'],
        'password' => bcrypt($data['password']),
        'bestaetigt' => 0,
        'verfikations_schluessel' => str_random(60)
    ]);

    $data['user'] = $user;

    Mail::send('mails.registrierung', $data, function($message, $user){
        $message->from('registrierung@junperbo.de', 'Registrierung');
        $message->to($user->email);
    });

    return $user;
}

有什么想法吗?谢谢!

3 个答案:

答案 0 :(得分:2)

除了@smartrahat的正确答案,您还可以使用use关键字在该函数中使变量可用:

Mail::send('mails.registrierung', $data, function ($message) use ($user) {
    $message->from('registrierung@junperbo.de', 'Registrierung');
    $message->to($user->email);
});

答案 1 :(得分:2)

您可以创建包含所有数据的数组(),然后将数组传递给Mail函数。

            $data = array('email'=>$request->input('Email'), 'nombre'=>$request->input('Nombre'));

            \Mail::send('email.action', ['data' => $data] , function ($message) use ($data) {
                //remitente
                $message->from(env('CONTACT_MAIL'), env('CONTACT_NAME'));
                //asunto
                $message->subject('Validación de Cuenta');
                //receptor
                $message->to($data['email'], $data['nombre']);
            });

答案 2 :(得分:1)

您的服务容器中已有$data['email']。无需定义$data['user'] = $user;

  1. function($message,$user)更改为function($message)

  2. 并使用$message->to($data['email'])

  3. 由于send()函数的第二个参数为$data,您可以在$data

    中使用Mail::send()的任意值