После настройки smtp, можем создать Mail-класс
Далее создаем Mail-класс с помощью artisan-команды:
php artisan make:mail MyTestEmail
В папке app/Mail
появится следующий файл:
namespace App\Mail; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Mail\Mailable; use Illuminate\Mail\Mailables\Content; use Illuminate\Mail\Mailables\Envelope; use Illuminate\Queue\SerializesModels; class MyTestEmail extends Mailable { use Queueable, SerializesModels; /** * Create a new message instance. * * @return void */ public function __construct() { // } /** * Get the message envelope. * * @return \Illuminate\Mail\Mailables\Envelope */ public function envelope() { return new Envelope( subject: 'My Test Email', ); } /** * Get the message content definition. * * @return \Illuminate\Mail\Mailables\Content */ public function content() { return new Content( view: 'view.name', ); } /** * Get the attachments for the message. * * @return array */ public function attachments() { return []; } }
После создания почтового класса вы можете просмотреть его содержимое и настроить класс, используя следующие методы:
Illuminate\Mail\Mailables\Envelope
, который позволяет вам определить тему и получателей электронного письма.Illuminate\Mail\Mailables\Content
, который позволяет вам определить шаблон Blade, используемый для создания содержимого сообщения электронной почты.Как видно из приведенного выше кода, метод content() вернет представление. Поэтому вам нужно перейти в каталог resources/views, создать новую папку и внутри нее файл Blade.php. Когда файл создан, вы можете добавить в него контент.
// resources/views/mail/test-email.blade.php Привет! Это сообщение с сайта!
В данном представлении можно использовать html-код, но использование CSS и JavaScript - запрещено!
Для передачи переменной в шаблон письма, можно воспользоваться методом with
:
namespace App\Mail; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Mail\Mailable; use Illuminate\Mail\Mailables\Content; use Illuminate\Mail\Mailables\Envelope; use Illuminate\Queue\SerializesModels; class MyTestEmail extends Mailable { use Queueable, SerializesModels; /** * Create a new message instance. * * @return void */ public function __construct(private $name) { // } /** * Get the message envelope. * * @return \Illuminate\Mail\Mailables\Envelope */ public function envelope() { return new Envelope( subject: 'My Test Email', ); } /** * Get the message content definition. * * @return \Illuminate\Mail\Mailables\Content */ public function content() { return new Content( view: 'mail.test-email', with: ['name' => $this->name], ); } }
Таким образом в шаблоне test-email.blade.php
будет доступна переменная $name
// resources/views/mail/test-email.blade.php Привет {{$name}}! Это сообщение с сайта!Далее добавляем маршрут в файл
routers/web.php
, используя следующий код:
use Illuminate\Support\Facades\Route; use App\Mail\MyTestEmail; use Illuminate\Support\Facades\Mail; Route::get('/testroute', function() { $name = "Funny Coder"; // The email sending is done using the to method on the Mail facade Mail::to('testreceiver@gmail.com')->send(new MyTestEmail($name)); });
Примечание. Обычно, в реальных приложениях вызов класса Mail осуществляется в контроллере или прослушивателях.
Чтобы проверить функциональность, вы можете запустить команду:php artisan serveа затем в браузере вставьте URL-адрес созданного вами маршрута.
Как только вы это сделаете, если все работает правильно, электронное письмо должно быть отправлено на указанный вами адрес «кому».
Чтобы узнать, как отправить электронное письмо в формате HTML, электронное письмо с вложением или электронное письмо с несколькими получателями, прочтите документацию Laravel Laravel Mail.