我设置了一个联系人表单,它在完成时使用Laravel通知发送电子邮件,但是看起来没有发送任何内容。
路线
Route::post('/contact', 'ContactController@store');
控制器
public function store()
{
request()->validate([
'name' => 'required|max:255',
'email' => 'required|email|unique:contacts|max:255',
'message' => 'required|max:2000',
]);
$contact = Contact::create(
request()->only([
'name',
'email',
'message',
])
);
User::first()->notify(new SendContactNotification($contact));
return back()->with('success', 'Thank you, I will be in touch as soon as I can');
}
通知
protected $contact;
public function __construct($contact)
{
$this->contact = $contact;
}
public function toMail($notifiable)
{
return (new MailMessage)
->line($this->contact->name)
->line($this->contact->email)
->line($this->contact->message);
}
当我运行它时,我确实收到了成功消息。但是,我的邮件陷阱中没有显示任何内容。下面是sanitized.env文件的邮件部分:
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=username
MAIL_PASSWORD=password
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS='admin@test.com'
MAIL_FROM_NAME='admin'
我看不出我做错了什么。我还尝试在通知中键入提示联系人的内容,例如:
public function __construct(Contact $contact)
{
$this->contact = $contact;
}
不幸的是,这不起作用。我还认为这可能与我的计算机没有设置为使用php发送电子邮件有关,但我觉得env文件可以解决这个问题。
联系人存储在数据库中正常,但没有发送电子邮件。有人能帮忙吗?