如何在 Laravel 命令而不是控制器中发送电子邮件
How can I send Email in Laravel command instead of controller
我正在使用 Laravel 开发一个项目,我希望能够在计划发送电子邮件时发送电子邮件。
到目前为止,我只找到了通过路由发送邮件的解决方案,但我希望能够在 cron 激活我自制的命令时发送邮件。我已经查看了应该发送的邮件,并制作了一个带有 php artisan make:mail sendMail
的页面 sendMail,returns 邮件视图。
sendMail.php
<?php
namespace App\Mail;
use Illuminate\Support\Facades\DB;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
class sendMail extends Mailable
{
use Queueable, SerializesModels;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct()
{
$winnersposts = DB::select('select post_id from winners group by post_id');
$posts = DB::select('select * from posts ');
$this->winnerposts =$winnersposts;
$this->posts=$posts;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this ->from('ivanrompa@gmail.com')
->view('emails.template');
}
}
mailAdmin.php
public function handle()
{
}
我的命令句柄仍然是空的,但我之前尝试在我的命令中实现来自我上面的控制器的逻辑,但它没有工作。
我是不是写错了代码,这是它不起作用的原因,还是我应该以不同的方式处理它?很高兴知道我仍在学习 Laravel 并且我以前从未通过代码发送过电子邮件。欢迎任何提示或解决方案。
假设您已正确设置电子邮件配置。
将此添加到您的 mailAdmin.php
use Mail;
use App\Mail\sendMail
public function handle()
{
Mail::to('recipient@gmail.com')->send(new sendMail);
}
然后运行命令
我正在使用 Laravel 开发一个项目,我希望能够在计划发送电子邮件时发送电子邮件。
到目前为止,我只找到了通过路由发送邮件的解决方案,但我希望能够在 cron 激活我自制的命令时发送邮件。我已经查看了应该发送的邮件,并制作了一个带有 php artisan make:mail sendMail
的页面 sendMail,returns 邮件视图。
sendMail.php
<?php
namespace App\Mail;
use Illuminate\Support\Facades\DB;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
class sendMail extends Mailable
{
use Queueable, SerializesModels;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct()
{
$winnersposts = DB::select('select post_id from winners group by post_id');
$posts = DB::select('select * from posts ');
$this->winnerposts =$winnersposts;
$this->posts=$posts;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this ->from('ivanrompa@gmail.com')
->view('emails.template');
}
}
mailAdmin.php
public function handle()
{
}
我的命令句柄仍然是空的,但我之前尝试在我的命令中实现来自我上面的控制器的逻辑,但它没有工作。
我是不是写错了代码,这是它不起作用的原因,还是我应该以不同的方式处理它?很高兴知道我仍在学习 Laravel 并且我以前从未通过代码发送过电子邮件。欢迎任何提示或解决方案。
假设您已正确设置电子邮件配置。
将此添加到您的 mailAdmin.php
use Mail;
use App\Mail\sendMail
public function handle()
{
Mail::to('recipient@gmail.com')->send(new sendMail);
}
然后运行命令