【问题标题】:Laravel - Email queued doesn't workLaravel - 排队的电子邮件不起作用
【发布时间】:2018-11-30 15:28:21
【问题描述】:

我有一个发送多封电子邮件的应用程序,有时它会返回一个超时错误。所以我认为解决方案是在后台发送排队的电子邮件,但我在实现它时遇到了问题。

例如在我的控制器中,我有它并且可以工作:

$data = array(
            'name' => $tecnic->name,
            'email' => $tecnic->email,
            'code' => $code
          );
Mail::send('email-to-tecnico', $data, function($message) use ($data)
        {
          $message->from('no-reply@domain.pt' , 'Title');
          $message->to($data['email'], $data['name'])->subject('subject');

        });

接下来我创建一个Job SendStartPatEmail 并添加:

use Mail;
class SendStartPatEmail implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    private $data;
    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct($data)
    {
      $this->data = $data;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle(Mailer $mailer)
    {
      Mail::send('email-to-tecnico', $data, function($message) use ($data)
      {
        $message->from('no-reply@domain.pt' , 'Title');

        $message->to($data['email'], $data['name'])->subject('Subject');

      });
    }
}

在控制器中,我删除 Mail::send 并添加:

SendStartPatEmail::dispatch($data);

当我运行这个作业时,作业是在作业表中创建的,但不发送电子邮件,并且尝试列是 0 。

这不会返回任何错误。

我做错了什么?

【问题讨论】:

  • 检查你的日志你得到什么样的错误
  • @AdnanMumtaz 我在日志文件中没有任何错误
  • 你在运行php artisan queue:work吗?
  • @AdnanMumtaz 好的,如果我运行 php artisan queue:work 我在徽标文件中有此错误:异常 'ErrorException' 带有消息'未定义变量:数据

标签: php laravel laravel-queue laravel-jobs


【解决方案1】:

要运行作业表中的排队作业,您需要运行php artisan queue:work

我建议阅读有关主管的文档,以确保工作人员始终在您需要的项目上运行:

Laravel Supervisor Configuration

【讨论】:

  • 好的,如果我运行 php artisan queue:work 我在 logo 文件中有这个错误:异常 'ErrorException' 和消息 'Undefined variable: data'
  • 嗯,这与您的问题所涉及的问题不同。显然,变量 $data 在您的代码中未定义。该错误还可能涉及未定义数据的哪一行,哪个文件。
  • 在 Job @OleHaugset 中的 handle() 处
  • 这一行 Mail::send('email-to-tecnico', $data, function($message) use ($data) @OleHaugset
  • 是的,那是因为你还没有定义 $data。它是 $this->data,因为 data 现在是类的属性。
猜你喜欢
  • 1970-01-01
  • 2022-08-13
  • 2019-03-09
  • 1970-01-01
  • 2020-05-22
  • 2015-11-27
  • 1970-01-01
  • 2019-07-17
  • 1970-01-01
相关资源
最近更新 更多