我创建了一个
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);