РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
816 of 1392 menu

Класс Mail

Класс Mail используется для отправки email-сообщений в Laravel. Он предоставляет простой и выразительный API для построения писем с использованием Mailable-классов. Основные методы класса: send - немедленная отправка, queue - отправка через очередь, later - отложенная отправка, raw - отправка простого текста, html - отправка HTML-письма, to - установка получателя, mailer - выбор почтового драйвера.

Синтаксис

<?php use Illuminate\Support\Facades\Mail; Mail::send($mailable); Mail::to($recipient)->send($mailable); Mail::queue($mailable); Mail::later($delay, $mailable); Mail::raw($content, $callback); Mail::html($html, $callback); ?>

Пример отправки Mailable-класса

Создадим Mailable-класс для приветственного письма:

<?php namespace App\Mail; use Illuminate\Bus\Queueable; use Illuminate\Mail\Mailable; use Illuminate\Mail\Mailables\Content; use Illuminate\Mail\Mailables\Envelope; use Illuminate\Queue\SerializesModels; class WelcomeMail extends Mailable { use Queueable, SerializesModels; public $user; public function __construct($user) { $this->user = $user; } public function envelope(): Envelope { return new Envelope( subject: 'Welcome to our platform', ); } public function content(): Content { return new Content( view: 'emails.welcome', with: ['user' => $this->user], ); } } ?>

Шаблон письма:

<html> <body> <h1>Hello {{ $user->name }}!</h1> <p>Welcome to our platform. We're glad to have you on board.</p> <p>Thank you for joining us.</p> </body> </html>

Отправка письма в контроллере:

<?php namespace App\Http\Controllers; use App\Mail\WelcomeMail; use App\Models\User; use Illuminate\Support\Facades\Mail; class UserController extends Controller { public function register() { $user = User::find(1); Mail::to($user->email)->send(new WelcomeMail($user)); return 'Email sent successfully!'; } } ?>

Результат выполнения кода:

"Email sent successfully!"

Пример отправки через очередь

Для отправки писем через очередь используйте метод queue:

<?php namespace App\Http\Controllers; use App\Mail\WelcomeMail; use App\Models\User; use Illuminate\Support\Facades\Mail; class UserController extends Controller { public function register() { $user = User::find(1); Mail::to($user->email)->queue(new WelcomeMail($user)); return 'Email queued successfully!'; } } ?>

Результат выполнения кода:

"Email queued successfully!"

Пример отложенной отправки

Метод later позволяет отправить письмо с задержкой:

<?php namespace App\Http\Controllers; use App\Mail\WelcomeMail; use App\Models\User; use Illuminate\Support\Facades\Mail; use Carbon\Carbon; class UserController extends Controller { public function register() { $user = User::find(1); $delay = Carbon::now()->addMinutes(10); Mail::to($user->email)->later($delay, new WelcomeMail($user)); return 'Email scheduled for later!'; } } ?>

Результат выполнения кода:

"Email scheduled for later!"

Пример отправки сырого текста

Метод raw отправляет простое текстовое письмо без шаблона:

<?php namespace App\Http\Controllers; use Illuminate\Support\Facades\Mail; class UserController extends Controller { public function sendRawEmail() { Mail::raw('This is a test email sent from Laravel.', function ($message) { $message->to('user@example.com') ->subject('Test Raw Email'); }); return 'Raw email sent!'; } } ?>

Результат выполнения кода:

"Raw email sent!"

Пример отправки HTML-письма

Метод html отправляет письмо с HTML-содержимым:

<?php namespace App\Http\Controllers; use Illuminate\Support\Facades\Mail; class UserController extends Controller { public function sendHtmlEmail() { $html = '<h1>Welcome!</h1><p>This is an HTML email from Laravel.</p>'; Mail::html($html, function ($message) { $message->to('user@example.com') ->subject('Test HTML Email'); }); return 'HTML email sent!'; } } ?>

Результат выполнения кода:

"HTML email sent!"

Пример с несколькими получателями

Метод to может принимать массив адресов:

<?php namespace App\Http\Controllers; use App\Mail\WelcomeMail; use Illuminate\Support\Facades\Mail; class UserController extends Controller { public function sendToMultiple() { $recipients = ['user1@example.com', 'user2@example.com']; Mail::to($recipients)->send(new WelcomeMail((object) ['name' => 'Guest'])); return 'Emails sent to multiple recipients!'; } } ?>

Результат выполнения кода:

"Emails sent to multiple recipients!"

Смотрите также

  • метод send,
    который выполняет немедленную отправку письма
  • метод queue,
    который отправляет письмо через очередь
  • метод later,
    который устанавливает задержку перед отправкой
  • метод to,
    который устанавливает получателя письма
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить