拉腊维尔5.5.28
我正在使用Laravel的按需通知发送一封简单表单提交到一个中心地址的电子邮件。
我在env文件中设置了mailtrap。
我的控制器中的代码:
use Notification // set at top of class
$submission = FormSubmission::create($request->all());
Notification::route('mail', 'test@test.org')
->notify(new FormSubmissionNotificiation($submission));
但是得到一个whoops错误。在vendor/laravel/framework/src/Illuminate/Mail/MailServiceProvider.php
上这个方法失败了
protected function setGlobalAddress($mailer, array $config, $type)
{
$address = Arr::get($config, $type);
if (is_array($address) && isset($address['address'])) {
$mailer->{'always'.Str::studly($type)}($address['address'], $address['name']);
}
}
它试图找到$address['name']
的索引,但是我没有名字,如果我有,我把它放在哪里呢?
看起来想不出来,谢谢你的帮助。
编辑:我尝试了另一种方法,我在数据库中添加了一个用户,在User
模型中添加了Notifiable
trait,并尝试发送如下通知$user->notify(new FormSubmissionNotification($submission);
,但仍然得到相同的错误。
4条答案
按热度按时间fdbelqdn1#
来自通知文档:
发送邮件通知时,请确保在
config/app.php
配置文件中设置name
值。此值将用于邮件通知消息的页眉和页脚。xnifntxz2#
必须在
.env
中设置MAIL_NAME
在
config/mail.php
中https://laravel.com/docs/5.5/mail#writing-mailables
x9ybnkn63#
好吧,我知道了。其实挺蠢的。
我在.env文件中添加了一个
MAIL_TO_ADDRESS
变量,用于保存我希望将通知发送到的电子邮件地址,但不想在控制器中直接调用env文件,因此在config/mail.php
文件中设置了一个新的数组元素,如下所示然后我计划在控制器中使用它,就像这样
但是即使我直接在控制器中使用一个字符串形式的虚拟电子邮件地址进行测试,它也使用了
to
变量和邮件配置文件中的电子邮件地址,即使我没有在任何地方引用它。一旦我从配置文件中删除了整个数组,它就可以工作了,同样,如果我向该数组添加一个名称,它也可以工作了。这也阻止了我使用标准的
$user->notify()
,并且总是试图使用env文件中的电子邮件地址,而不是用户模型。ryhaxcpt4#
你必须把名字放在config\mail.php中的“to”数组中
并且在各自的模型中
参见laravel官方文件laravel@8.x