Как отправить e-mail с Laravel используя Gmail

Источник: «How to Send Email With Laravel Using Gmail»
Laravel предлагает встроенный метод отправки электронной почты из вашего приложения с помощью фасада Mail. Этот метод требует подключения внешнего почтового сервера, например SMTP-сервера 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 класс, добавить шаблон и отправлять письма с помощью всего нескольких строк кода. Счастливого программирования!

Ссылки

Дополнительные материалы

Предыдущая Статья

Laravel Where

Следующая Статья

PHP генераторы — практический пример