我正在實施一個發票API系統,我必須在到期日、3天后、7天后實作自動提醒郵件(這就像一個API,所以郵件必須從登錄用戶的電子郵件發送給選定的客戶)
。對于這個系統,到目前為止,我實作了一個復選框的選擇,它將存盤登錄用戶、所選客戶、到期日、用于提醒的日期選擇的資料存盤在資料庫中)。) 我在發送來自不同用戶的電子郵件時遇到了問題,添加條件從到期日開始發送電子郵件
。console->command->SendReminderemail.php
<?php
namespace AppConsoleCommands。
使用 IlluminateConsoleCommand。
Use AppReminder;
use AppDonor;
使用 AppMailReminderEmailDigest。
Use Mail;
class SendReminderEmails extends Command
{
/**。
*控制臺命令的名稱和簽名。
*
* @var string
*/
protected $signature = 'reminder:emails';
/**。
* 控制臺的命令描述。
*
* @var string
*/
protected $description = 'Invoice Reminder Emails';
/**。
*創建一個新的命令實體。
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/***。
*執行控制臺命令。
*
* @return mixed
*/
public function handle()
{
//
$pending_Reminders = Reminder::where('status',0)->get()。
$data = [];
foreach ($pending_Reminders as $reminder){
$data[$reminder->donor_id][] = $reminder->toArray()。
}
foreach($data as $donor_id => $pending_Reminders){
$this-> sendEmailToUser($donor_id, $pending_Reminders)。
}
// dd($data);.
}
private function sendEmailToUser($donor_id, $pending_Reminders){
$user = Donor::find($donor_id) 。
Mail::to($user)->send(new ReminderEmailDigest($pending_Reminders) )。
// dd($user);/span>
}
}
App->mail->ReminderEmailDigest
<?php
namespace AppMail。
使用 IlluminateBusQueueable。
use IlluminateMailMailable;
use IlluminateQueueSerializesModels;
use IlluminateContractsQueueShouldQueue;
class ReminderEmailDigest extends Mailable implements ShouldQueen
{
使用 Queueable, SerializesModels;
/**。
*創建一個新的訊息實體。
*
* @return void
*/
private $pending_Reminders;
public function __construct($pending_Reminders)
{
$this->reminders = $pending_Reminders;
}
/**。
*建立資訊。
*
* @return $this
*/
public function build()
{
return $this->markdown('emails.reminder-digest')
->with('pending_Reminders', $this->reminder) 。
}
}
App->console->kernal
<?php
namespace AppConsole。
使用 IlluminateConsoleSchedulingSchedule。
use IlluminateFoundation控制臺內核 為 ConsoleKernel。
use AppConsoleCommandsSendReminderEmails;
class Kernel extends ConsoleKernel
{
/**。
*你的應用程式提供的Artisan命令。
*
* @var陣列
*/
protected $commands = [
SendReminderEmails::class,
];
/**。
*定義應用程式的命令時間表。
*
* @param IlluminateConsoleSchedulingSchedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule)
{
//$schedule->command('reminder:emails')->everyMinute();{
}
/***。
* 注冊應用程式的命令。
*
* @return void
*/
protected function commands()。
{
$this->load(__DIR__.'/Commands'/span>)。
require base_path('rouse/console.php')。
}
現在只有當我在控制臺中輸入reminder:emails命令時,電子郵件才能作業
。我怎樣才能使郵件自動化呢?有什么相關建議嗎?
uj5u.com熱心網友回復:
你需要安排你的命令。 為此,請查看如何將注冊你的命令到schedular,以及如何設定cron job以便schedular運行。
更具體地說,你可以這樣做:
$schedule->command('reminder:emails')->day();
uj5u.com熱心網友回復:
只是一個關于你如何清理你的代碼的說明。
$pending_Reminders = Reminder::where('status',0)
->get()
->groupBy('donor_id')
->each(function($reminders, $donor_id>) {
$user = Donor::find($donor_id) 。
Mail::to($user)->send(newReminderEmailDigest($reminders-> toArray())。
});
要設定artisan命令每日運行,
app/Console/Kernel.php
protected function schedule(Schedule $schedule)
{
$schedule->command('reminder:emails')->day()。
}
為了讓它運行 sudo crontab -e
* * * * cd path/to/project & & /usr/local/bin/php artisan schedule: run >> /dev/null 2>&1。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/313415.html
標籤:
上一篇:GCP(谷歌云)虛擬機-無法通過Python腳本用SMTP發送電子郵件
下一篇:我如何讓我的各個模塊一起作業?
