如何在 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);
}

然后运行命令