отправка писем нескольким получателям в очереди laravel - PullRequest
0 голосов
/ 13 июля 2020

в приложении Я хочу отправить электронное письмо нескольким получателям. Прямо сейчас я использую l oop, и он работает, но если будет 100 / x получателей, очередь будет работать 100 / k раз для этого. Как лучше всего отправлять электронную почту 100 / k получателям или это нормально для l oop?

BlogController. php

public function store(Request $request)
{
    $request->validate([
        'title' => 'required|string|max:100|unique:blogs,title',
        'description' => 'sometimes|nullable|string|max:255',
        'body' => 'required|string',
        'hit' => 'sometimes|nullable|integer',
        'file' => 'sometimes|nullable|image|mimes:jpg,jpeg,png|max:2048'
    ]);
    $request['published_at'] = now();
    $request['title'] = $request->title.'-'.time();
    // create slug
    $request['slug'] = Str::slug($request->title.'-'.time());
    // upload image and get filename
    $uploaded_file_name = $request->file('file')
        ? upload_img($request->file('file'), 'blog-'.time(), 'storage/blogs',
        true, 200) : '';
    if($uploaded_file_name){
        $request['image'] = 'storage/blogs/thumbnail/'.$uploaded_file_name;
    }
    $blog = Blog::create($request->all());
    if($blog){
        // get users who wants to get news
        $users = User::whereNotNull('send_me_news')->get();

        // send blog created email to multiple recipients
        foreach ($users as $user) {
            Mail::to($user)->send(new BlogCreated($blog));
        }

        session()->flash('success', 'Blog was created');
    }else{
        session()->flash('error', 'Blog was not created!');
        return back()->withInput();
    }
    dd($blog);
    return back();
}

BlogCreated. php

class BlogCreated extends Mailable implements ShouldQueue
{
    use Queueable, SerializesModels;
    public $blog;

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

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->from(env('MAIL_FROM_ADDRESS'))
            ->subject('Eflowering.com news')
            ->markdown('emails.blogs.created');
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...