Laravel Mail: Как легко отправлять электронные письма в Laravel

Отправка электронных писем — одно из самых важных дополнений к любой системе, будь то транзакционные электронные письма или рассылка информационных писем. Согласно последним опросам, 64% малых предприятий используют электронную почту для связи с клиентами. Это делает необходимым отправку электронных писем клиентам, чтобы привлечь ваших клиентов, а также создать базу лояльных клиентов.

Laravel предоставляет чистый и простой способ отправки электронных писем без каких-либо проблем и трудностей с помощью класса Mailable.

В этой статье я собираюсь показать вам, как легко отправлять электронные письма в Laravel и как создавать шаблоны электронных писем с помощью markdown.

Что вам нужно знать о Laravel Mail

Если вы хотите отправлять электронные письма из своего приложения Laravel, вам нужно знать о почтовом API Laravel Mail. Этот простой API построен на базе популярной библиотеки Swiftmailer. Вы можете настроить его на использование SMTP, Mailgun, Postmark, Amazon SES или Sendmail. Вы также можете использовать простой API для отправки писем непосредственно из вашего PHP-кода. Laravel предоставляет несколько почтовых драйверов для отправки писем, что упрощает отправку писем с помощью любой интеграции на ваш вкус.

Почтовый API Laravel позволяет легко отправлять красивые шаблоны писем. Вы можете создать класс Mailable и публичную функцию build(), которая возвращает ваш почтовый шаблон.

Начать работу с Laravel Mail очень просто. Просто настройте параметры SMTP, и вы готовы к работе!

Как отправлять электронные письма в Laravel?

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

Шаг 1: Установите Laravel

Вы можете создать новый проект Laravel с помощью команды laravel new

laravel new test
Войдите в полноэкранный режим Выйти из полноэкранного режима

Шаг 2: Создайте доступный для отправки по почте класс

Вы можете использовать команду make:mail artisan в Laravel. Это создаст класс Mailable, который имеет функцию build(), куда будет добавлена ваша почтовая логика.

Вы можете указать тему письма, содержимое письма, например, изображения, вложения, адрес для ответа и т.д.

php artisan make:mail OrderMail
Вход в полноэкранный режим Выйти из полноэкранного режима

Эта команда создаст доступный для отправки класс в приложении/папке «Почта».

<?php

namespace AppMail;

use IlluminateBusQueueable;
use IlluminateContractsQueueShouldQueue;
use IlluminateMailMailable;
use IlluminateQueueSerializesModels;

class OrderMail extends Mailable
{
    use Queueable, SerializesModels;

    /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->markdown('emails.orders');
    }
}

Войти в полноэкранный режим Выйти из полноэкранного режима

Пример почты с использованием шаблона Markdown

Одним из ключевых преимуществ laravel является поддержка markdown. Вы можете создать шаблон письма, используя markdown. Это позволит вам получить шаблонный вид письма, который вы можете изменить по своему вкусу или использовать как есть.

Вы можете модифицировать команду make:mail и добавить флаг, чтобы указать, какой формат разметки будет использоваться вашим классом Mailable Class. Шаблон разметки — это файл-блейд, который помещается в каталог «emails».

php artisan make:mail OrderMail --markdown=emails.orders
Вход в полноэкранный режим Выйти из полноэкранного режима

Это создает стандартный файл блейд-файла для разметки по умолчанию в папке resources/views/emails

@component('mail::message')
# Introduction

The body of your message.

@component('mail::button', ['url' => ''])
Button Text
@endcomponent

Thanks,<br>
{{ config('app.name') }}
@endcomponent

Войти в полноэкранный режим Выход из полноэкранного режима

Используя простой сценарий письма с заказом, вы можете передать некоторые данные по умолчанию в markdown через команду with() в классе Mailable. Вы можете использовать конструктор для получения данных из других классов.

Вы можете обновить логику класса Mailable

<?php

namespace AppMail;

use AppModelsOrders;
use AppModelsUser;
use IlluminateBusQueueable;
use IlluminateContractsQueueShouldQueue;
use IlluminateMailMailable;
use IlluminateQueueSerializesModels;
use IlluminateSupportFacadesURL;

class OrderMail extends Mailable
{
    use Queueable, SerializesModels;

    /**
     * Create a new message instance.
     *
     * @return void
     */
    public $order, $user;
    public function __construct(Orders $order, User $user)
    {
        $this->user = $user;
        $this->order = $order;
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->markdown('emails.orders')
            ->subject('Your Order is being Processed')
            ->with([
                'order' => $this->order,
                'customer' => $this->user,
                'order_url' => URL::route('orders.show', $this->order->id)
            ]);
    }
}

Войти в полноэкранный режим Выйти из полноэкранного режима

Следующим шагом будет добавление содержимого в шаблон markdown blade

@component('mail::message')
Hello {{$customer->name}},

Your Order No.{{$order->id}} has been placed successfully and is now being processed

You can view your order details using the link below.

@component('mail::button', ['url' => $order_url])
View Order
@endcomponent

Regards,<br>
{{ config('app.name') }}
@endcomponent

Войти в полноэкранный режим Выйти из полноэкранного режима

Если вы хотите настроить почтовые компоненты Laravel, вы можете опубликовать активы и изменить их по своему вкусу с помощью этой команды

php artisan vendor:publish --tag=laravel-mail
Войти в полноэкранный режим Выйти из полноэкранного режима

Шаг 3: Отправка электронной почты в Laravel

После того как вы установили шаблон электронной почты, пришло время отправить письмо. Для отправки письма можно использовать почтовый фасад. Он имеет множество методов, но самым важным является метод to(). Этот метод определяет, куда будет отправлено письмо. Вы можете передать электронную почту пользователя в качестве параметра, и Laravel отправит письмо на указанный адрес.

Следующий важный метод — это метод send(). Этот метод позволяет нам указать экземпляр сообщения Mailable. Здесь вы указываете класс Mailable, который вы создали ранее.

use IlluminateSupportFacadesMail;
Mail::to(request()->user())->send(new MailableClass);
Вход в полноэкранный режим Выход из полноэкранного режима

Вы можете обновить фасад, чтобы включить в него ваш класс Mailable

use IlluminateSupportFacadesMail;

$user = User::find($id)?? auth()->user();
$order = Orders::find($id);
Mail::to($user->email)->send(new OrderMail($order, $user));
Войти в полноэкранный режим Выход из полноэкранного режима

Электронные письма могут быть поставлены в очередь и отправлены в фоновом режиме, что делает ваше приложение еще быстрее.

Перед отправкой письма сначала необходимо обновить конфигурацию почты.

Вы можете установить детали по умолчанию в файле env.

MAIL_MAILER=smtp
MAIL_HOST=mailhog
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS="hello@example.com"
MAIL_FROM_NAME="${APP_NAME}"
Вход в полноэкранный режим Выход из полноэкранного режима

После настройки почтовых конфигураций вы можете начать отправлять электронные письма из вашего приложения Laravel.

Шаг 4: Тестирование электронной почты в Laravel

Laravel позволяет легко тестировать электронную почту, используя файл журнала laravel, mailhog или Mailtrap в качестве сторонней интеграции. Эти сервисы предоставляют поддельный SMTP-сервер, с которого вы можете протестировать и убедиться, что ваши электронные письма правильно отформатированы.

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

Используя Mailtrap, вы можете наглядно увидеть, как отформатировано письмо


Образец электронного письма с использованием Markdown

Какие сторонние провайдеры отправки электронной почты поддерживаются в Laravel?

Laravel поддерживает несколько сторонних провайдеров отправки электронной почты, включая Mailgun, Postmark, Amazon SES и SendGrid. У каждого провайдера есть свои сильные и слабые стороны, поэтому важно выбрать тот, который лучше всего соответствует вашим потребностям.

Если вы предпочитаете использовать собственный SMTP-сервер, убедитесь, что SMTP-порт вашего сервера не заблокирован. Большинство VPS-сервисов, таких как Digital Ocean, блокируют порт 25 (SMTP), что затрудняет отправку и получение электронной почты на вашем сервере.

Другие сервисы, такие как Contabo и Kamatera, не блокируют порт 25, что упрощает размещение собственного почтового сервера.

Если вы предпочитаете размещать собственный почтовый сервер, а не пользоваться услугами сторонних поставщиков услуг электронной почты, то вы можете прочитать эту статью.

Следует отметить, что размещение собственного почтового сервера имеет свои недостатки, например, письма могут попадать в папку спама. Это происходит потому, что IP вашего почтового сервера все еще новый среди других почтовых SMTP-серверов, и вам придется разогреть свой IP, чтобы он приобрел хорошую репутацию среди других серверов.

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

Почему стоит использовать Laravel для отправки электронной почты?

Одной из замечательных особенностей Laravel является встроенная почтовая система. Это позволяет легко отправлять электронные письма из вашего приложения без необходимости устанавливать отдельный почтовый сервер. Благодаря надежному почтовому API вы можете подключиться к любому поставщику услуг электронной почты и с легкостью отправлять свои письма.

Отправка писем в Laravel с помощью SMTP-сервера Gmail

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

Настройка аккаунта Google

Сначала вам нужно настроить некоторые параметры безопасности в своем аккаунте Gmail. Для этого войдите в свой аккаунт Gmail и выберите «Управление аккаунтом Google» в своем профиле.

Затем необходимо активировать двухэтапную верификацию


Перед включением двухэтапной верификации

После активации двухэтапной верификации вы получите доступ к разделу «Пароль приложения».


После включения двухэтапной верификации

Перейдите в раздел паролей приложений и создайте новый пароль для почтового приложения Laravel.

Выберите приложение Mail App и устройство Custom


Сгенерировать новый пароль приложения

Обновление почтовых конфигураций

После генерации пароля приложения вы можете обновить почтовые конфигурации в env-файле, чтобы использовать SMTP-конфигурации Gmail.

MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=465
MAIL_USERNAME=youremail@gmail.com
MAIL_PASSWORD=generated password
MAIL_ENCRYPTION=ssl
MAIL_FROM_ADDRESS=youremail@gmail.com
MAIL_FROM_NAME="${APP_NAME}"
Вход в полноэкранный режим Выйти из полноэкранного режима

После настройки конфигураций вы можете отправлять электронные письма с помощью Gmail бесплатно. Имейте в виду, что Gmail позволяет отправлять только 500 писем в день, поэтому, если ваше приложение будет отправлять много писем, вы можете рассмотреть другие сервисы.

Заключение

Отправка электронных писем в Laravel проста и необходима в любом готовом к производству приложении. С помощью электронных писем вы можете привлекать клиентов, а также автоматизировать некоторые задачи, необходимые для полноценного функционирования приложения. В этой статье мы рассмотрели, как установить простую реализацию почты в Laravel и как настроить SMTP-сервер Gmail, чтобы мы могли использовать его в нашем приложении Laravel.

Существует несколько способов дальнейшей отправки электронных писем в Laravel. Одним из них является планирование с помощью Laravel Scheduler. Надеюсь, эта статья была информативной, и я надеюсь, что вы получили удовольствие от ее прочтения.

Если вам понравилась эта статья, вам понравится бесплатное руководство по Laravel, которое я подготовил для вас. Не забудьте получить руководство уже сегодня.
Спасибо за прочтение.

The post Почта Laravel: Как легко отправлять электронные письма в Laravel appeared first on Блог Яна Куму.

Оцените статью
devanswers.ru
Добавить комментарий