大家好!今天,我将引导您完成在 Laravel 中创建计划任务的过程。我们将以向用户发送每日营销电子邮件为例。
首先,让我们使用以下 Artisan 命令创建一个新的 Mailable 类:
php artisan make:mail DailyMarketingEmail --view
此命令在 App/Mail 目录中生成一个新的 Mailable 类,并在 resources/views/mail/ 目录中生成相应的视图文件 daily-marketing-email.blade.php。您可以在此视图文件中自定义电子邮件的内容。
接下来,我们将创建一个 Artisan 命令来处理发送 DailyMarketingEmail。运行以下命令:
php artisan make:command SendDailyMarketingEmail
该命令会在app/Console/Commands目录下生成一个新的命令类。
生成命令后,您将在生成的类中看到两个关键属性:
protected $signature:这定义了 Artisan 命令的名称和签名。
protected $description:这提供了命令的描述。
此类中的句柄方法是您定义命令逻辑的地方。
一切设置完毕后,您可以通过运行以下命令列出所有 Artisan 命令:
php 工匠
您应该在列表中看到您的命令:
现在,让我们在handle方法中定义发送营销电子邮件的逻辑:
each(function ($user) { Mail::to($user->email)->send(new DailyMarketingEmail); }); } }
在handle方法中,我们从数据库中检索所有用户并向每个用户发送DailyMarketingEmail。
您可以通过运行手动测试您的命令:
php artisan app:send-daily-marketing-emails
考虑使用 Mailtrap 或 MailHog 等工具在测试期间捕获和查看已发送的电子邮件。
最后,为了每天自动发送这封电子邮件,我们需要在位于 app/Console/ 目录的 Kernel.php 文件的 Schedule 方法中安排命令:
command('app:send-daily-marketing-emails')->dailyAt('08:30'); } /** * Register the commands for the application. */ protected function commands(): void { $this->load(__DIR__.'/Commands'); require base_path('routes/console.php'); } }
在这里,我们使用 dailyAt('08:30') 方法安排命令在每天上午 08:30 运行。您可以根据需要调整时间。
排队电子邮件:对于大量用户来说,将电子邮件排队而不是一次性发送所有电子邮件是一个很好的做法。这可以通过在 Mailable 类中实现 ShouldQueue 接口来完成。
性能注意事项:对于大型用户群,请考虑优化数据库查询和电子邮件发送过程,以确保高效的性能。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3