Php cron作业-在检查laravel中的到期日是否临近时自动发送电子邮件
我正试图在某些东西过期时通过laravel automatic发送电子邮件 Mail>EpiryAlert.phpPhp cron作业-在检查laravel中的到期日是否临近时自动发送电子邮件,php,laravel,email,cron,laravel-7,Php,Laravel,Email,Cron,Laravel 7,我正试图在某些东西过期时通过laravel automatic发送电子邮件 Mail>EpiryAlert.php class ExpireAlert extends Mailable implements ShouldQueue { use Queueable, SerializesModels; private $alerts; /** * Create a new message instance. * * @return void
class ExpireAlert extends Mailable implements ShouldQueue
{
use Queueable, SerializesModels;
private $alerts;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct($alerts)
{
$this->alerts = $alerts;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->markdown('emails.alerts')
->with('alerts', $this->alerts);
}
}
控制台>命令>PassportExpire.php
class PassportExpire extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'expire:passport';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Sends a Passport Expiry to a Admin via email';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return int
*/
public function handle()
{
$now = Carbon::now('Asia/Dubai')->toDateTimeString();
$passports = Passport::query()
->where(['send_alert' => 1])
->get();
$data = [];
foreach($passports as $key=>$passport){
$data[$key]['id'] = $passport->id;
$data[$key]['passport_no'] = $passport->passport_no;
$data[$key]['name'] = $passport->name;
$data[$key]['id_no_cnic'] = $passport->id_no_cnic;
$data[$key]['issue_date'] = $passport->issue_date;
$data[$key]['expiry_date'] = $passport->expiry_date;
$data[$key]['post_designation'] = $passport->post_designation;
$data[$key]['dob'] = $passport->dob;
$to = Carbon::createFromFormat('Y-m-d H:s:i', $now);
$from = Carbon::createFromFormat('Y-m-d H:s:i', $passport->expiry_date);
$data[$key]['now'] = $now;
if( Carbon::parse($passport->expiry_date) > Carbon::now() ){
$number_of_days = Carbon::parse(Carbon::now('Asia/Dubai'))->diffInDays($passport->expiry_date);
$data[$key]['days'] = $number_of_days;
$data[$key]['days_in_human'] = Carbon::parse($passport->expiry_date)->diffForHumans();
if( $number_of_days == 7){
$data[$key]['alert_for_7_days'] = 'Alert will be sent now 7 days';
}
if( $number_of_days == 15){
$data[$key]['alert_for_15_days'] = 'Alert will be sent now 15 days';
}
if( $number_of_days == 30){
$data[$key]['alert_for_30_days'] = 'Alert will be sent now 30 days';
}
}else{
$data[$key]['days'] = 0;
$data[$key]['days_in_human'] = Carbon::parse($passport->expiry_date)->diffForHumans();
}
}
$alert = [
'passport_no' => 'ex12312312',
'name' => 'test name',
'expiry_date' => '01-11-2020',
'id_no_cnic' => '12312-3123123-1'
];
$this->sendEmailToAdmin($alert);
}
private function sendEmailToAdmin($alerts){
$alerts = [
'passport_no' => 'ex12312312',
'name' => 'test name',
'expiry_date' => '01-11-2020',
'id_no_cnic' => '12312-3123123-1'
];
Mail::to('salman.promate@gmail.com')->send(new ExpireAlert($alerts));
DB::table('tbl_test')->insert(
['data_text' => 'test data']
);
print_r($alerts);
}
}
Console>Kernal.php
class Kernel extends ConsoleKernel
{
/**
* The Artisan commands provided by your application.
*
* @var array
*/
protected $commands = [
PassportExpire::class,
];
/**
* Define the application's command schedule.
*
* @param \Illuminate\Console\Scheduling\Schedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule)
{
$schedule->command('expire:passport --force')->everyMinute();
}
}
当我运行这个命令时,php artisan expire:passport
我得到了成功的回复,但它不是通过命令发送电子邮件,而是当我通过route打开时,它在这里发送的电子邮件是route
use App\Mail\ExpireAlert;
use Illuminate\Support\Facades\Mail;
Route::get('/mail', function () {
$alerts = [
'passport_no' => 'ex12312312',
'name' => 'test name',
'expiry_date' => '01-11-2020',
'id_no_cnic' => '12312-3123123-1'
];
Mail::to('salman.promate@gmail.com')->send(new ExpireAlert($alerts));
return new ExpireAlert($alerts);
});
你能告诉我怎么解决这个问题吗?问题是什么
请在服务器/主机上检查此命令
/usr/local/bin/php/home2/junaidquyyum/public_html/fas/artisan
过期:护照
这是我的服务器路径
home2/junaidquyyum/public_html/fas
fas是一个文件夹,我的laravel应用程序在其中请阅读每一步已经完成的文档,但它在运行命令后不发送电子邮件,甚至在服务器上也不发送。唯一一条发送电子邮件的路线。