我正在考虑使用saved
事件通过口才模式发送欢迎电子邮件事件。
一切正常,直到实际发送电子邮件为止。因此,我将其添加到了User.php
模型的顶部。
protected $dispatchesEvents = [
'saved' => \App\Events\UserCreated::class
];
UserCreated.php
文件仅包含基本样板并分配用户
<?php
namespace App\Events;
use App\Models\User;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Queue\SerializesModels;
class UserCreated extends Event
{
use InteractsWithSockets, SerializesModels;
/**
* @var User
*/
public $user;
/**
* Create a new event instance.
*
* @param User $user
*/
public function __construct(User $user)
{
$this->user = $user;
}
}
我正在听EventServiceProvider.php
内的内容,然后触发SendWelcomeEmail.php
文件。
protected $listen = [
'App\Events\UserCreated' => [
'App\Listeners\SendWelcomeEmail'
]
];
SendWelcomeEmail.php
看起来像这样...
<?php
namespace App\Listeners;
use App\Events\UserCreated;
use App\Mail\WelcomeEmail;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Support\Facades\Mail;
class SendWelcomeEmail
{
/**
* Create the event listener.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Handle the event.
*
* @param UserCreated $event
* @return void
*/
public function handle(UserCreated $event)
{
$user = $event->user;
Mail::to($user->email_address)->send(new WelcomeEmail($user));
}
}
到目前为止,我可以在dd
类内执行WelcomeEmail
,并且可以在屏幕上看到它,但是请求完成了,我得到了响应,并且没有错误。但是,邮件实际上从未发送给用户。
我正在为此使用SendGrid,并且已经完全按照他们所输入的内容进行了操作,看不到任何发送到SendGrid的请求,而从我那端发出的请求距离实际发送电子邮件的速度还很远。
我已经在MailServiceProvider
内注册了邮件配置和app.php
,所以我真的不知道该怎么办。
我也100%知道我得到了正确的用户电子邮件地址,并将其转储出去却得到了正确的输入。
先谢谢了。
答案 0 :(得分:0)
我认为您的方法调用可能不正确。根据文档(始终适用于5.1),应该将to()
函数包装在回调中:
Mail::send('your.email.blade', $blade_variables, function($msg) use ($user) {
$msg->to($user->email_address);
});