Способ отправки еженедельного электронного письма всем пользователям в Laravel - PullRequest
0 голосов
/ 06 октября 2019

Я сейчас настроил этот почтовый ящик.

Контроллер

class EmailController extends Controller
{
    public function sendMail ()
    {
    $user = auth()->User::all();
    Mail::to($user)->send(new WeeklyUpdate($user));

    if(Mail::faillures())
    {
        return response()->Fail('Fail');
    }
    else
    {
        return response()->Success('Succses');
    }
}

Почтовый класс

class WeeklyUpdate extends Mailable
{
use Queueable, SerializesModels;

/**
 * Create a new message instance.
 *
 * @return void
 */
public function __construct()
{
    //
}

/**
 * Build the message.
 *
 * @return $this
 */
public function build()
{
    return $this->view('email.WeeklyUpdate');
}

Как я могу начать с того, что, например, все пользователи будут получать это еженедельное обновление по электронной почте каждый вечер воскресенья,Я провел некоторые исследования, но нашел только частичные объяснения, и, поскольку я новичок в Laravel, я хотел бы получить некоторые рекомендации о том, с чего начать.

1 Ответ

1 голос
/ 06 октября 2019

Отправьте задание в планировщике Laravel в app\Http\Console\Kernel.php

и укажите интервал для задания CRON

Примерно так должно поступить

protected function schedule(Schedule $schedule)
{
    foreach (App\User::all() as $user) {
        $schedule->job(new SendWeeklyEmail($user))->weekly();
    }
}

Предполагая, что вынастройте работу в очереди, как это

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

    public $user;

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

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        \Mail::to($this->user->email)->send(new App\Mail\WeeklyUpdate($this->user));
    }
}

Узнать больше

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...