Как отправить e-mail с Laravel используя Gmail
Чтобы начать отправлять электронные письма с помощью Gmail в Laravel, необходимо включить доступ к приложению в учётной записи Gmail и добавить учётные данные Gmail SMTP в файл Laravel .env
. После этого вы сможете использовать встроенный в Laravel фасад Mail
для отправки писем в своём приложении.
В данной статье мы рассмотрим этот процесс в подробностях. Давайте приступим!
Шаг 1: Настройка учётной записи Gmail (обязательное условие)
Прежде чем начать отправлять электронные письма из приложения Laravel, необходимо настроить учётную запись Gmail таким образом, чтобы к ней могли обращаться сторонние приложения.
В руководствах часто предлагается установить флажок Менее безопасный доступ к приложениям
, который раньше работал. Эта опция была удалена из Gmail.
Чтобы открыть доступ к Laravel, необходимо включить функцию Двухэтапная аутентификация
в разделе Безопасность
на странице учётной записи Google.
Если там написано Двухэтапная аутентификация отключена
, то необходимо пройти все шаги, чтобы указать свой номер телефона. Это повышает безопасность вашей учётной записи, позволяя отправлять код по SMS при всех входах в систему.
После включения двухэтапной верификации на экране появится зелёная галочка, на которую нужно кликнуть, чтобы настроить доступ приложений.
После клика по кнопке Двухэтапная аутентификация
укажите название приложения и устройства. Сгенерируйте ключ, скопируйте и вставьте его в файл .env, как будет показано далее в Шаге 3.
Шаг 2: Установка Laravel
Если вы ещё не создали проект Laravel, создайте его с помощью composer:
composer create-project laravel/laravel EmailDemo
Шаг 3: Настройка почтовых параметров в .env
файле
Откройте файл .env
в корне проекта Laravel и настройте конфигурацию почты:
MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=465
MAIL_USERNAME=your@gmail.com
MAIL_PASSWORD=your_gmail_password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=your@gmail.com
MAIL_FROM_NAME="laracoding.test EmailDemo"
Замените your@gmail.com
на свой адрес Gmail, а your_gmail_password
— на свой ключ Gmail, сгенерированный в Шаге 1.
Шаг 4: Создание класса Mail
Laravel Artisan может автоматически создать отдельный класс для вашей электронной почты:
php artisan make:mail WelcomeMail
Откройте файл WelcomeMail.php
, созданный в каталоге app/Mail
. Настройте функцию __construct
так, чтобы она поддерживала передачу $title
и $body
. Также настройте функции envelope()
и content()
для определения содержания и темы письма. В качестве альтернативы можно скопировать и вставить следующий код:
<?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;
/**
* Create a new message instance.
*/
public function __construct(private string $title, private string $body)
{
}
/**
* Get the message envelope.
*/
public function envelope(): Envelope
{
return new Envelope(
subject: 'Welcome to laracoding.com EmailDemo',
);
}
/**
* Get the message content definition.
*/
public function content(): Content
{
return new Content(
view: 'mail.welcome',
with: [
'title' => $this->title,
'body' => $this->body,
],
);
}
/**
* Get the attachments for the message.
*
* @return array<int, \Illuminate\Mail\Mailables\Attachment>
*/
public function attachments(): array
{
return [];
}
}
Шаг 5: Создание контроллера
Далее создадим контроллер, который будет отвечать за отправку приветственного письма. Для создания контроллера воспользуйтесь командой artisan:
php artisan make:controller EmailController
Откройте файл EmailController.php
в каталоге app/Http/Controllers
и добавьте в него следующий код:
<?php
namespace App\Http\Controllers;
use App\Mail\WelcomeMail;
use Illuminate\Support\Facades\Mail;
class EmailController extends Controller
{
public function sendWelcomeEmail()
{
$title = 'Welcome to the laracoding.com example email';
$body = 'Thank you for participating!';
Mail::to('your-recipient@domain.com')->send(new WelcomeMail($title, $body));
return "Email sent successfully!";
}
}
Примечание: в приведённом выше коде замените your-recipient@domain.com
на ваш адрес электронной почты, на который вы будете получать тестовое письмо.
Шаг 6: Создание маршрута
В файле routes/web.php
добавьте маршрут, связанный с методом sendWelcomeEmail
:
use App\Http\Controllers\EmailController;
Route::get('/send-welcome-email', [EmailController::class, 'sendWelcomeEmail']);
Шаг 7: Создание шаблона электронной почты с использованием Blade
Создайте шаблон письма с Blade. В каталоге resources/views/emails
создайте файл welcome.blade.php
и настройте содержимое письма, используя синтаксис HTML и Blade. Приведём простой пример:
<!DOCTYPE html>
<html>
<head>
<title>{{ $title }}</title>
</head>
<body>
<p>{{ $body }}</p>
</body>
</html>
Шаг 8: Запуск примера для отправки электронной почты
Все готово для отправки приветственного письма! Запустите своё приложение Laravel:
php artisan serve
Откройте веб-браузер и зайдите на сайт http://localhost:8000/send-welcome-email
Метод sendWelcomeEmail
отправит приветственное письмо с заданными заголовком и телом. Проверьте почтовый ящик получателя, чтобы увидеть результат.
Заключение
Отправка электронных писем с помощью Gmail и Laravel — простой процесс благодаря встроенному в Laravel фасаду Mail
. Следуя шагам этого руководства, вы сможете легко настроить учётную запись Gmail и Laravel .env
файл, создать mail класс, добавить шаблон и отправлять письма с помощью всего нескольких строк кода. Счастливого программирования!