当前位置: 首页 > 知识库问答 >
问题:

为什么在laravel中发送邮件时队列仍在等待?

吴高远
2023-03-14

我想在队列中发送邮件,但在发送邮件时没有等待https://laravel.com/docs/5.7/queues#connections-vs队列

我运行命令创建表作业

php artisan queue:table    
php artisan migrate

我创建一个工作发送邮件:php工匠制作:作业SendEmail作业
和编辑代码:

namespace App\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Mail;
class SendEmailJob  implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    /**
     * Create a new job instance.
     *
     * @return void
     */
    public $body;
    public $emailto;

    public function __construct($body,$email)
    {
        //
         $this->body=$body;
         $this->emailto=$email;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
       $email=$this->emailto;
       Mail::send("body_email.confirm_order",['Body'=> $this->body], function($message) use ($email)
       {
           $message->from(env('MAIL_USERNAME'),"Eye glasses");
           $message->subject("Confirm Email");
           $message->to($email);
       });  
    }
}

我从控制器调用队列:

use App\Jobs\SendEmailJob;

public function index()
{
     $Body="test";
     $email="daitb@vnitsolutions.com";     
     SendEmailJob::dispatch($Body,  $email);
     $calendars= AppointmentModel::GetAppointmentofDoctor($id,$datetime);      
     return view('frontend.appointment',["calendars"=>$calendars]);
}

添加QUEUE_DRIVER=数据库到file. envrun命令:

php artisan queue:work

若我运行控制器,进程仍在等待发送邮件完成并运行其他进程。我尝试更改为:

SendEmailJob::dispatch($Body,  $email)->delay(now()->addMinutes(3));

它没有延迟,它仍然在5s后发送邮件。

为什么在laravel中发送邮件时仍然排队等待?我用win 32

共有1个答案

山翼
2023-03-14

我的问题通过更改QUEUE_CONNECTION=sync. env文件中的QUEUE_CONNECTION=数据库来修复

 类似资料:
  • 我正在尝试用Laravel 5.2发送电子邮件。这是我第一次在拉威尔发电子邮件。但它抛出了这个错误 这是我发送电子邮件的代码: 这是我在env文件中的电子邮件设置 我的欢迎视图只有一条消息“Hello world” 我已经在Gmail设置中为我的电子邮件配置了不太安全的应用程序设置。那么,我的代码有什么问题,为什么会抛出那个错误?

  • 我正在使用Laravel 7,我想通过Laravel Mail facade使用Sendemail驱动程序发送电子邮件。当我使用PHP邮件函数时,它起作用了,但我想改用Laravel邮件外观。 我的环境文件电子邮件配置: 我在config/mail中的默认邮件设置。php: 我已经创建了邮件类,如文档中所述。使其工作的正确配置是什么?

  • 简介 Laravel 基于 SwiftMailer 函数库提供了一套干净、简洁的邮件 API ,Laravel 为 SMTP 、Mailgun 、SparkPost 、 Amazon SES 、 PHP 的 mail 函数及 sendmail 提供驱动,让你可以快速从本地或云端服务自由地发送邮件。 驱动前提 基于 API 的驱动,例如 Mailgun 和 SparkPost 通常比 SMTP 服务

  • 我是java初学者,我想用java发送一封电子邮件,因为我正在用java编写这段代码。但是我的代码抛出了一个异常,我需要一个提示为什么… 这是异常的堆栈跟踪: 这是我的代码

  • 下面是我为nodemailer做的函数- 在这里,我已经在.env文件中给出了电子邮件id和密码,我正在下面使用这个功能。客户将从我的id获得一封邮件到他的电子邮件id中。 密码是正确的。但我遇到了这个错误- 错误:无效的登录名:534-5.7.9需要应用程序特定的密码。了解更多信息,请访问534 5.7.9 https://support.google.com/mail/?p=invalidse

  • 问题内容: 我最近开始编程我的第一个node.js。但是,我发现我无法创建直接发送到我的电子邮件的“联系我”表单,因为我无法从能够发送电子邮件的节点中找到任何模块。 有人知道node.js电子邮件库或示例联系表单脚本吗? 问题答案: node-email-templates是一个更好的选择:https : //github.com/niftylettuce/node-email- template