Email Laravel Mailable |->;发件人($this->;input->;mail)

Email Laravel Mailable |->;发件人($this->;input->;mail),email,laravel-5.6,Email,Laravel 5.6,我创建了一个 php artisan make:mail ContactFormFilledOut 这很有效。但我唯一的问题是,我无法访问用户邮件以将其插入 ->来自('users-mail') 我试图通过这样做来获得用户的邮件 $this->input->mail 但是我得到了错误 尝试获取非对象的属性“mail” 所以我也试着去做 $this->输入['mail']。 这也无济于事 public function build() { return $this-&g

我创建了一个

php artisan make:mail ContactFormFilledOut
这很有效。但我唯一的问题是,我无法访问用户邮件以将其插入

->来自('users-mail')

我试图通过这样做来获得用户的邮件
$this->input->mail
但是我得到了错误
尝试获取非对象的属性“mail”
所以我也试着去做
$this->输入['mail']
。 这也无济于事

public function build()
    {

        return $this->view('mail.kontaktform')
            ->from($this->input->mail) // HERE IS THE ISSUE
            ->subject('Test subject');
    }
这里有所有的代码

class ContactFormFilledOut extends Mailable
{
    use Queueable, SerializesModels;

    public $input;
    /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct($input)
    {
        $this->input = $input;
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {

        return $this->view('mail.kontaktform')
            ->from($this->input->mail) // HERE IS THE ISSUE
            ->subject('Test subject');
    }
}

您可以指定希望Laravel在构造函数中注入的数据,在这种情况下,您希望能够访问假定是该电子邮件发件人的用户的电子邮件地址。你可以这样做

use App\User; 

class ContactFormFilledOut extends Mailable
{
    public $user;

    public function __construct(User $user)
    {
        $this->user = $user;
    }
    /* ... */
}
Laravel将自动注入经过身份验证的用户,并将其保存在邮件的属性
user

你有这个问题,因为当你在邮件的
构造函数中添加
$input
作为参数时,Laravel不知道要注入哪个对象

但是您可以克服的是,您可以实例化mailable并传入
$input
,它可以是您想要的任何东西

$mailable = new ContactFromFilledOut($some_data);

$user = User::find(1);
Mail::to($user)
    ->send($mailable);