Laravel 可邮寄 | ->from($this->input->mail)

Laravel Mailable | ->from($this->input->mail)

我创建了一个

php artisan make:mail ContactFormFilledOut

效果很好。但我唯一的问题是我无法访问用户邮件以将其插入

->from('users-mail')

我试图通过这样做来获取用户邮件 $this->input->mail 但我得到了错误 Trying to get property 'mail' of non-object 所以我也试着做 $this->input['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 作为参数添加到可邮寄对象的 constructor 中时,Laravel 不知道要注入哪个对象。

但是你可以克服这个问题,你可以手动实例化可邮寄对象并传入 $input,它可以是你想要的任何东西

$mailable = new ContactFromFilledOut($some_data);

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