Метод send
Метод send класса Mail применяется для отправки электронных писем. Первым параметром передаётся класс письма, вторым - замыкание для настройки получателя. Метод возвращает пустой результат при успешной отправке.
Синтаксис
<?php
Mail::send($mailable, $callback);
?>
Пример
Давайте создадим класс письма и отправим его с использованием метода send:
<?php
namespace AppMail;
use IlluminateBusQueueable;
use IlluminateMailMailable;
use IlluminateMailMailablesContent;
use IlluminateMailMailablesEnvelope;
use IlluminateQueueSerializesModels;
class WelcomeMail extends Mailable
{
use Queueable, SerializesModels;
public $name;
public function __construct($name)
{
$this->name = $name;
}
public function envelope(): Envelope
{
return new Envelope(
subject: 'Welcome to our site',
);
}
public function content(): Content
{
return new Content(
view: 'emails.welcome',
);
}
}
?>
<h1>Welcome, {{ $name }}!</h1>
<p>Thank you for registering on our site.</p>
<?php
namespace AppHttpControllers;
use AppMailWelcomeMail;
use IlluminateSupportFacadesMail;
use AppModelsUser;
class UserController extends Controller
{
public function register()
{
$user = User::find(1);
Mail::send(new WelcomeMail($user->name), function ($message) use ($user) {
$message->to($user->email);
});
return 'Email sent successfully';
}
}
?>
Результат выполнения кода:
"Email sent successfully"
Пример
Отправим письмо с указанием темы и получателя прямо в замыкании:
<?php
namespace AppHttpControllers;
use AppMailOrderConfirmation;
use IlluminateSupportFacadesMail;
class OrderController extends Controller
{
public function confirm($orderId)
{
$order = Order::find($orderId);
Mail::send(new OrderConfirmation($order), function ($message) {
$message->to('customer@example.com')
->subject('Your order has been confirmed');
});
return 'Order confirmed and email sent';
}
}
?>
Результат выполнения кода:
"Order confirmed and email sent"
Пример
Отправим письмо сразу нескольким получателям с использованием массива email-адресов:
<?php
namespace AppHttpControllers;
use AppMailNewsletterMail;
use IlluminateSupportFacadesMail;
class NewsletterController extends Controller
{
public function sendNewsletter()
{
$emails = ['user1@example.com', 'user2@example.com', 'user3@example.com'];
Mail::send(new NewsletterMail(), function ($message) use ($emails) {
$message->to($emails);
});
return 'Newsletter sent to all subscribers';
}
}
?>
Результат выполнения кода:
"Newsletter sent to all subscribers"