В laravel 5.8 у меня есть отчет с кнопкой «Отправить электронное письмо», при нажатии на эту кнопку запускается ajax-запрос, с содержимым отчета в «report_html» var для управления, например:
public function sentReportEmailContent()
{
$request= request();
$requestData= $request->all();
$report_html= $requestData['report_html'];
$loggedUser= Auth::user();
$reportAvailableSpacesByZonesAcceptorsArray = config('app.reportAvailableSpacesByZonesAcceptorsArray', []);
$site_name = config('app.name', '');
if ( count($reportAvailableSpacesByZonesAcceptorsArray) == 0 ) {
return response()->json(['error_code' => 1, 'message' => 'There are no receiver emails specified !'], HTTP_RESPONSE_INTERNAL_SERVER_ERROR);
}
$to= $reportAvailableSpacesByZonesAcceptorsArray[0];
$subject= 'Available Spaces By Zones report was sent at ' . $site_name;
$additiveVars= [ 'html'=> $report_html ];
unset($reportAvailableSpacesByZonesAcceptorsArray[0]);
$cc= $reportAvailableSpacesByZonesAcceptorsArray;
\Mail::to($to)->send( new SendgridMail( 'emailContainer', $to, $cc, $subject , $additiveVars ) );
return response()->json(['error_code' => 0, 'message' => '', 'user'=> $loggedUser->id], HTTP_RESPONSE_OK);
}
и с помощью сервиса Sendgrid отчет отправляется пользователям, определенным в config ok.
Теперь мне нужно запустить этот отчет и отправить электронное письмо получателям в планировщике.
Я создал новую команду:
php artisan make:command reportAvailableSpacesByZones --command=report:available-spaces-by-zones
, который имеет метод дескриптора:
public function handle()
{
\Log::info( 'Report run # ' . time() );
}
, который запускается в запланированное время.Но как я могу запустить свой отчет и отправить его содержимое, как будто это сделано вручную?
Модифицированный блок: Мой отчет выполняется по (локальному) URL: http://local -boxbooking2.com / admin / report / Available-Space-By-Zone Я переделал, чтобы, если запустить URL http://local -boxbooking2.com / Admin / Report / Available-Space-By-Zone / Send-электронная почта при открытии
в отчете браузера открывается и проверяется, что функция javascript «отправить электронную почту при открытии» запускается для отправки по электронной почте (с помощью сервиса Sendgrid) содержимого страницы (на самом деле отчета))
Я попытался вызвать команду с помощью задач cron: В app / Console / Commands / reportAvailableSpacesByZones.php:
class reportAvailableSpacesByZones extends Command
{
public function handle()
{
\Log::info( 'Report From inside app/Console/Commands/reportAvailableSpacesByZones.php run # ' . time() );
return redirect()->to('/admin/report/available-spaces-by-zones/send-email-on-open');
}
Я вижу информацию журнала, но нет отчетов по электронной почте.Какой путь правильный?
Спасибо!