7 days of WordPress plugins, themes & templates - for free!* Unlimited asset downloads! Start 7-Day Free Trial
Advertisement
  1. Code
  2. PHP

Как отправить письма в Laravel

Scroll to top
Read Time: 8 mins

Russian (Pусский) translation by Ilya Nikov (you can also view the original English article)

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

Настройка предварительных условий

Laravel реализует обертку поверх библиотеки SwiftMailer, которая упрощает настройку и использование электронной почты в одно и то же время. Настройки почты по умолчанию можно найти в config/mail.php.

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

Если вы собираетесь использовать драйвер smtp для отправки писем, вам также необходимо установить другие связанные параметры, такие как MAIL_HOST, MAIL_PORT, MAIL_ENCRYPTION, MAIL_USERNAME и MAIL_PASSWORD.

С другой стороны, если вы собираетесь использовать драйвер sendmail, то вы хотите убедиться, что системный путь sendmail установлен в правильное значение в файле config/mail.php.

Вы также можете установить адрес from, который будет использоваться при отправке писем под ключом from. И, наконец, если вы хотите использовать рендеринг электронной почты Markdown, вы можете установить эти параметры под ключом markdown.

Вишенка на торте - это то, что вы также можете использовать сторонние поставщики почтовых услуг, такие как Mailgun, Mandrill, SES и SparkPost. Если вы используете одну из этих служб, вам нужно убедиться, что вы установили соответствующие параметры в файле config/services.php.

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

Создание класса Mailable

В этом разделе мы создадим класс Mailable, который будет использоваться для отправки электронных писем. Класс Mailable отвечает за отправку писем с помощью почтовой программы, настроенной в файле config/mail.php. Фактически, Laravel уже предоставляет команду artisan, которая позволяет нам создать базовый шаблон.

Это должно создать пустой шаблон электронной почты в файле app/Mail/DemoEmail.php, как показано в следующем фрагменте.

Давайте заменим содержимое этого файла следующим.

Существует два важных метода, которые класс mailable обычно реализует - __construct и build. Метод __construct используется для инициализации объектов, которые предполагается использовать в шаблоне электронной почты. С другой стороны, метод build используется для инициализации дополнительных значений, связанных с электронной почтой, таких как, шаблон просмотра, вложения и т.д.

В нашем случае мы передали объект $demo в качестве аргумента конструктора и присвоили его публичному свойству demo.

В методе build мы инициализировали конфигурацию, специфичную для электронной почты.

  • Параметр from используется для установки адреса электронной почты, который будет использоваться как адрес.
  • Используя метод view, вы можете установить шаблон электронной почты, который будет использоваться при отправке электронной почты с использованием этого mallable. В нашем случае мы установили его в mails.demo, а это значит, что вам нужно создать файл шаблона представления в resources/views/mails/demo.blade.php.
  • Затем метод text используется для настройки текстовой версии шаблона электронной почты.
  • Как мы только что обсуждали, метод __construct используется для настройки объектов, которые будут использоваться в шаблоне электронной почты, вы также можете использовать метод with, который позволяет вам устанавливать данные представления сообщения.
  • Затем мы использовали метод attach для прикрепления изображения с сообщением.

Конечно, нам нужно создать шаблоны писем, которые мы должны использовать при отправке писем. Идем дальше и создаем файл resources/views/mails/demo.blade.php, такой как показано в следующем фрагменте.

Кроме того, давайте создадим текстовую версию этого файла в resources/views/mails/demo_plain.blade.php.

Таким образом, это был класс mailable, доступный для отправки, но мы еще не сделали этого, поскольку нам нужно использовать фасад Mail для отправки писем. В следующем разделе мы рассмотрим, как вы можете использовать Mail Facade для отправки электронной почты с использованием класса DemoEmail Mailable, который был только что создан в этом разделе.

Завершение

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

Давайте создадим файл контроллера в app/Http/Controllers/MailController.php со следующим содержимым.

Важно отметить, что мы включили фасад Illuminate\Support\Facades\Mail, который будет использоваться для отправки электронной почты. В методе send следующий оператор отвечает за отправку электронной почты, сначала инициализируя App\Mail\DemoEmail Mailable.

Метод to в фасаде Illuminate\Support\Facades\Mail возвращает экземпляр класса \Illuminate\Mail\PendingMail, который уже содержит соответствующую почтовую программу, настроенную в файле config/mail.php.

И, наконец, мы используем метод send класса \Illuminate\Mail\PendingMail, который отправляет фактическое электронное письмо.

Чтобы протестировать его, добавим связанный маршрут в файл routes/web.php.

И с этим вы можете открыть URL http://your-laravel-site.com/mail/send, чтобы узнать, работает ли он так, как ожидалось.

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

Для этого вам нужно установить значение MAIL_DRIVER в log в файле config/mail.php. Затем вы можете запустить вышеупомянутый URL-адрес и проверить файл журнала, чтобы проверить, был ли там зарегистрирован шаблон электронной почты.

Если все будет хорошо, вы должны увидеть, что электронное письмо регистрируется в файле storage/logs/laravel.log.

В значительной степени это касается функции почты в Laravel, и это завершает эту статью.

Заключение

Сегодня мы изучили почтовый API, который встроен в Laravel.

Начиная с базовых концепций, мы реализовали класс mailable который является важным элементом в API почты в Laravel. В конце мы также протестировали класс mailable, создав пользовательский контроллер, чтобы увидеть, действительно ли он работает.

Если вы только начинаете работу с Laravel или хотите расширить свои знания, создать свой сайт или приложение, у нас есть множество уроков и статей, которые вы можете изучать на Envato Market.

Я хотел бы узнать ваши отзывы в форме вопросов и комментариев, используя приведенный ниже канал!

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.