【问题标题】:Laravel send email, error: Argument 2 passed toLaravel 发送电子邮件,错误:参数 2 传递给
【发布时间】:2016-11-15 07:29:56
【问题描述】:

我在使用 Laravel 发送电子邮件时遇到问题,这是我的方法:

public function store(CreateUserRequest $request){
    $name = Input::get('name');
    $imie = Input::get('imie');
    $nazwisko = Input::get('nazwisko');
    $email = array('email' => Input::get('email'));
    $password = Input::get('password');

    Mail::send(['name' => $name], function ($message) use ($name, $imie, $nazwisko, $email, $password) {
        $message->from('us@example.com', 'System Magazyn');
        $message->attach('Your temporary password: '.['password' => $password]);
        $message->to(['email'=>$email])->subject('Rejestracja Magazyn');

    });

    User::create($request->all());
    Session::flash('addUserOK', 'Użytkownik dodany poprawnie.');
    return redirect('user');
}

此方法保存到数据库新用户。我想向新用户发送电子邮件,其中包含有关正确注册的信息和带有临时密码的信息。 我按照文档https://laravel.com/docs/5.2/mail#sending-mail中的说明做了 就像在这个主题中一样:Laravel 4 from contact form to admin email,但 Laravel 仍然返回错误:

Mailer.php 第 149 行中的 FatalThrowableError:类型错误:参数 2 传递给 Illuminate\Mail\Mailer::send() 必须是数组类型, 给定对象,调用 C:\xampp\htdocs\kurwa_magazyn\magazyn_michal\vendor\laravel\framework\src\Illuminate\Support\Facades\Facade.php 在第 219 行

编辑:

这是注册新用户的表格:

{!! Form::open(['route' => 'user.store', 'method' => 'post', 'class' => 'form-horizontal']) !!}

    {!! Form::text('name', null, ['class' => 'form-control', 'placeholder' => 'Nazwa użytkownika...']) !!}<br />
    {!! Form::text('imie', null, ['class' => 'form-control', 'placeholder' => 'Imię...']) !!}<br />
    {!! Form::text('nazwisko', null, ['class' => 'form-control', 'placeholder' => 'Nazwwisko...']) !!}<br />
    {!! Form::email('email', null, ['class' => 'form-control', 'placeholder' => 'Adres e-mail...']) !!}<br />
    {!! Form::text('password', uniqid(), array('class' => 'form-control', 'placeholder' => 'Podaj hasło...')) !!}<br />

    {!! Form::select('permissions', array('0' => 'Pracownik fizyczny', '2' => 'Magazynier', '3' => 'Demo użytkownik', '1' => 'Administrator'), NULL, ['class' => 'form-control']) !!}<br />
    {!! Form::hidden('remember_token', bcrypt(uniqid(rand(0,9)))) !!}

    {!! Form::submit('Dodaj', ['class' => 'btn btn-default']); !!}
{!! Form::close() !!}

【问题讨论】:

    标签: php laravel sendmail


    【解决方案1】:

    我知道这是一个老问题,但是对于任何有同样问题的人,Mail::send 的第二个参数必须是一个数组。该数组可以包含将在视图中读取的任何数据。

    代码如下:

    $data = ['foo' => 'baz'];
    
    Mail::send(['name' => $name], $data, function ($message) use ($name, $imie, $nazwisko, $email, $password) {
            $message->from('us@example.com', 'System Magazyn');
            $message->attach('Your temporary password: '.['password' => $password]);
            $message->to(['email'=>$email])->subject('Rejestracja Magazyn');
    
        });
    

    然后,在视图中,可以打印变量$foo

    <p>Variable foo: {{$foo}}</p>
    

    【讨论】:

      【解决方案2】:

      我认为你遇到的问题是一个奇怪的组合:

      $email = array('email' => Input::get('email'));
      

      还有这个

      $message->to(['email'=>$email])->subject('Rejestracja Magazyn');
      

      根据API docs 方法to 接受电子邮件/姓名或数组的组合

      尝试将您的代码更改为:

      $message->to($email)->subject('Rejestracja Magazyn');
      

      由于您之前已经在这里定义了该数组:

      $email = array('email' => Input::get('email'));
      

      【讨论】:

        猜你喜欢
        • 2014-07-21
        • 2019-11-22
        • 1970-01-01
        • 2016-07-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-14
        相关资源
        最近更新 更多