Я пытаюсь использовать очередь laravel для отправки массовых писем. Пока что я записал логику, и она работает нормально, но проблема в том, что когда я писал логику в контроллере, это занимало много времени, поэтому я подумал об использовании заданий, но проблема снова не устранена.
Моя проблема
Моя проблема в том, что я не могу отправить электронное письмо в фоновом режиме, даже если я использую очередь.
Контроллер
public function newsletter(Request $request)
{
//dd($request->all());
dispatch(new SendEmail($request));
Session::flash('message', 'Email Sent');
Session::flash('class', 'success');
return redirect()->route('news');
}
Вакансии
public function handle(Request $request)
{
//
$data = array(
'message' => $request->message,
'subject' => $request->subject,
'file' => $request->file("file")
);
$teachingLevel = $request->highest_teaching_level;
$school = $request->school;
$province = $request->province;
$district = $request->district;
$subject = $request->subject;
if ($teachingLevel != "" && $school != "" && $province != "" && $district != "") {
$email = User::where('highest_teaching_level', $teachingLevel)->where('current_school_name', $school)->where('address','LIKE', '%'.$province.'%')->where('address','LIKE', '%'.$district.'%')->pluck('email');
}else{
$email = User::pluck('email');
}
foreach($email as $e)
{
Mail::to($e)->send(new NewsLetter($data, $subject));
}
}
Письмо отправляется, но в фоновом режиме этого не происходит. Возможно, это связано с тем, как я передал переменную $request
в функцию handle()
.
Любая помощь будет оценена. Спасибо!