【问题标题】:Creating Email queue in Laravel在 Laravel 中创建电子邮件队列
【发布时间】:2017-09-25 14:14:05
【问题描述】:

Newsletter.php

<?php

namespace App\Mail;
use App\Order;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Http\Request;

class Newsletter extends Mailable
{
    use Queueable, SerializesModels;

    /**
     * Create a new message instance.
     *
     * @return void
     */

    public $order;

    public function __construct($order)
    {
        $this->order = $order;
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->view('mail', $this->order)->subject($this->order['subject']);
    }
}

SendReminderEmail.php

<?php

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;
use App\Mail\Newsletter;
use App\User;

class SendReminderEmail implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    /**
     * Create a new job instance.
     *
     * @return void
     */

    public $order, $email;

    public function __construct($order, $emails)
    {
        $this->order = $order;
        $this->email = $emails;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        //for($i=0;$i<count($this->email);$i++)
        Mail::to($this->email)->queue(new Newsletter($this->order));
    }
}

控制器

public function sendSubMail(Request $request){
    $data = ['text' => $request->input('message'), 'subject' => $request->input('subject')];
    $emails = DB::table('emails')->get();
    for ($i=0; $i < count($emails); $i++) { 
        try {
            Mail::to($emails[$i])->queue(new Newsletter($data));
            //dispatch((new Job)->onQueue('high'))
            dispatch(new SendReminderEmail($data, $emails[$i]));
        } catch (Exception $e) {
        }
    }
    return view('emailSent', ['sub' => 'Emails successfully sent']);
}

谁能解释一下如何在 laravel 中创建电子邮件队列。我尝试了很多方法,但似乎都没有。

我正在尝试使用队列发送电子邮件。我必须在请求中发送超过 1500 个。但我实现的队列似乎不起作用。请帮忙。 提前致谢

【问题讨论】:

  • 你有read the docs吗?
  • 发布您已经厌倦的内容这不是在 SO 上发布问题的正确方式
  • 抱歉我现在添加了sn-p

标签: laravel laravel-5 laravel-5.4


【解决方案1】:

使用 Cron 发送邮件的一种方法

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-13
    • 2018-08-22
    • 1970-01-01
    • 2023-04-05
    • 2019-07-17
    • 2016-05-20
    • 2010-09-06
    • 1970-01-01
    相关资源
    最近更新 更多