如何在预定时间内发送报告
How to send report in in scheduled time
在 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 服务报告发送给配置中定义的用户。
现在我需要 运行 此报告并在调度程序中向收件人发送电子邮件。
我创建了一个新命令:
php artisan make:command reportAvailableSpacesByZones --command=report:available-spaces-by-zones
其中有 handle 方法:
public function handle()
{
\Log::info( 'Report run # ' . time() );
}
在预定时间触发。
但是我怎样才能 运行 我的报告并像手动完成一样发送它的内容?
修改块:
我的报告是 运行 by (local )url :
http://local-boxbooking2.com/admin/report/available-spaces-by-zones
我重新制作了 if to 运行 url
http://local-boxbooking2.com/admin/report/available-spaces-by-zones/send-email-on-open
在浏览器报告中打开并检查“打开时发送电子邮件”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');
}
我看到日志信息,但没有通过电子邮件发送报告。
哪种方式是正确的?
谢谢!
在app/Console/Kernal.php中添加命令到受保护的命令数组
'App\Console\Commands\reportAvailableSpacesByZones',
在调度方法中添加
$schedule->command('cron:reportAvailableSpacesByZones')->weeklyOn(2, '20:30');
可用的其他命令
https://laravel.com/docs/5.8/scheduling
在服务器 crontab 上
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1
在 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 服务报告发送给配置中定义的用户。
现在我需要 运行 此报告并在调度程序中向收件人发送电子邮件。
我创建了一个新命令:
php artisan make:command reportAvailableSpacesByZones --command=report:available-spaces-by-zones
其中有 handle 方法:
public function handle()
{
\Log::info( 'Report run # ' . time() );
}
在预定时间触发。 但是我怎样才能 运行 我的报告并像手动完成一样发送它的内容?
修改块: 我的报告是 运行 by (local )url : http://local-boxbooking2.com/admin/report/available-spaces-by-zones 我重新制作了 if to 运行 url http://local-boxbooking2.com/admin/report/available-spaces-by-zones/send-email-on-open
在浏览器报告中打开并检查“打开时发送电子邮件”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');
}
我看到日志信息,但没有通过电子邮件发送报告。 哪种方式是正确的?
谢谢!
在app/Console/Kernal.php中添加命令到受保护的命令数组
'App\Console\Commands\reportAvailableSpacesByZones',
在调度方法中添加
$schedule->command('cron:reportAvailableSpacesByZones')->weeklyOn(2, '20:30');
可用的其他命令
https://laravel.com/docs/5.8/scheduling
在服务器 crontab 上
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1