【问题标题】:Laravel mailable not sending emailLaravel 可邮寄不发送电子邮件
【发布时间】:2018-06-27 21:18:46
【问题描述】:

我正在考虑使用 saved 事件通过 Eloquent 模型发送欢迎电子邮件事件。

在实际发送电子邮件之前,一切似乎都正常。所以我在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));
    }
}

到目前为止,我可以在 WelcomeEmail 类中执行 dd 并且我可以看到它显示在屏幕上,但是请求完成,我得到响应并且没有错误。但是,邮件从未真正发送给用户。

我为此使用了 SendGrid,并且我完全按照他们所输入的内容进行了操作,我看不到任何进入 SendGrid 的请求,而且我的请求远远快于实际发送电子邮件。

我已经在app.php 中注册了邮件配置和MailServiceProvider,所以我真的不知道它可能是什么。

我也 100% 知道我得到了正确的用户电子邮件地址并将其转储出来我得到了正确的输入。

提前致谢。

【问题讨论】:

  • 你使用的是什么版本的 Laravel?

标签: php laravel sendgrid lumen


【解决方案1】:

我认为您的方法调用可能不正确。根据文档(无论如何对于 5.1),您应该将 to() 函数包装在回调中:

Mail::send('your.email.blade', $blade_variables, function($msg) use ($user) {
    $msg->to($user->email_address);
});

请参阅https://laravel.com/docs/5.1/mail#sending-mail 了解更多信息。

【讨论】:

    猜你喜欢
    • 2014-09-13
    • 2022-08-13
    • 2018-07-29
    • 2019-03-15
    • 1970-01-01
    • 1970-01-01
    • 2018-09-07
    • 2017-02-11
    • 2015-10-01
    相关资源
    最近更新 更多