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

问题描述 投票:0回答:1

我创建了一个

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');
    }
}
email laravel-5.6
1个回答
0
投票

您可以在构造函数中指定要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);
© www.soinside.com 2019 - 2024. All rights reserved.