Как я могу отправить электронную почту в команде Laravel вместо контроллера - PullRequest
0 голосов
/ 07 ноября 2019

Я работаю над проектом с использованием Laravel, где я хочу иметь возможность отправлять электронную почту, когда она запланирована.

До сих пор я нашел только решения для отправки почты через Маршрут, но я хочу иметь возможность отправлять почту, когда cron активирует мою собственную команду. Я уже просмотрел письмо, которое должно быть отправлено, и создал страницу sendMail с php artisan make:mail sendMail, которая возвращает представление почты.

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 и никогда раньше не отправлял письма по коду. Любые советы или решения приветствуются.

1 Ответ

0 голосов
/ 07 ноября 2019

При условии, что вы правильно настроили свою электронную почту. Добавьте это в ваш mailAdmin.php

use Mail;
use App\Mail\sendMail

public function handle()
{
  Mail::to('recipient@gmail.com')->send(new sendMail);
}

Затем выполните команду

...