Создание простой почтовой системы в Laravel без представлений и уведомлений

В этом уроке мы рассмотрим, как создать простую почтовую систему в Laravel без использования представлений и уведомлений. Мы сосредоточимся на программной отправке электронных писем с использованием встроенного Mail-фасада Laravel. К концу этого руководства вы получите базовое представление о том, как отправлять электронные письма в Laravel без необходимости просмотра или уведомлений.

Предварительные требования:
Прежде чем мы начнем, убедитесь, что у вас соблюдены следующие требования:

  • Laravel установлен в вашей системе.
  • Базовые знания о фасаде Laravel Mail

Шаг 1. Настройка конфигурации почты
Сначала давайте настроим наш почтовый драйвер в файле .env. Откройте файл .envв своем проекте Laravel и установите следующие переменные:

MAIL_DRIVER=log
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=your-email@example.com
MAIL_FROM_NAME=Your Name

Обратите внимание, что в этом примере мы используем драйвер log, который регистрирует отправленные электронные письма, а не отправляет их. Это полезно для целей тестирования.

Шаг 2. Создание почтового класса
Далее давайте создадим почтовый класс для обработки логики отправки электронной почты. В своем терминале выполните следующую команду, чтобы создать новый почтовый класс:

php artisan make:mail SimpleMail

Эта команда создаст новый почтовый класс с именем SimpleMailв каталоге app/Mail.

Откройте файл app/Mail/SimpleMail.phpи обновите его, добавив в него следующий код:

<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
class SimpleMail extends Mailable
{
    use Queueable, SerializesModels;
    /
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->subject('Your Subject')
            ->text('emails.simple_mail')
            ->with([
                'message' => 'This is a sample email without a view or notification.',
            ]);
    }
}

В приведенном выше коде мы определяем метод build, который задает тему электронного письма и определяет его содержимое. Мы используем метод text, чтобы предоставить тело письма напрямую, без использования представления. Вы можете настроить тему и текст в соответствии со своими потребностями.

Шаг 3. Отправка электронного письма
Теперь, когда у нас настроен класс почты, давайте отправим электронное письмо. Откройте нужный контроллер или команду, куда вы хотите отправить электронное письмо, и добавьте следующий код:

<?php
namespace App\Http\Controllers;
use App\Mail\SimpleMail;
use Illuminate\Support\Facades\Mail;
class MailController extends Controller
{
    public function sendEmail()
    {
        $email = new SimpleMail();
        Mail::send($email);

        return "Email sent successfully!";
    }
}

В приведенном выше коде мы создаем экземпляр класса SimpleMailи используем метод Mail::sendдля отправки электронного письма.

Шаг 4. Тестирование электронной почты
Чтобы протестировать функциональность электронной почты, вы можете добавить маршрут, который запускает метод sendEmailв вашем контроллере. Откройте файл routes/web.phpи добавьте следующий маршрут:

Route::get('/send-email', 'MailController@sendEmail');

Теперь, когда вы посещаете /send-emailв своем браузере, электронное письмо будет отправлено с использованием класса SimpleMail.

В этом уроке мы узнали, как создать простую почтовую систему в Laravel без использования представлений и уведомлений. Мы рассмотрели, как настроить почтовый драйвер, создать почтовый класс и программно отправлять электронные письма с помощью фасада Mail Laravel. Этот подход позволяет отправлять электронные письма напрямую, без необходимости просмотра или уведомлений, что делает его подходящим для простых почтовых систем.

Выполнив шаги, описанные в этом руководстве, вы теперь должны иметь базовое представление о том, как реализовать простую почтовую систему в Laravel без представлений и уведомлений.