Отправка email в Laravel, используя SMTP

Ромчик
0

Доброго времени суток. В данной статье мы рассмотрим, как правильно отправлять электронную почту в Laravel с помощью протокола SMTP. Мы будем использовать Laravel 5.7. А также будем использовать шаблон blade для создания представления содержимого электронной почты.

И в качестве примера реализуем форму обратной связи. Ну, что ж приступим…

Как устанавливать Laravel я не буду описывать, тем более это вы можете прочитать в статье «Создание CMS на Laravel: создание виртуального хоста, установка и настройка проекта».

Настройка Email в Laravel.

Переходим в конфигурационный файл .env


MAIL_DRIVER=smtp

MAIL_HOST=smtp-hostname

MAIL_PORT=25

MAIL_USERNAME= // some username

MAIL_PASSWORD= // some password

MAIL_ENCRYPTION=null

Нам необходимо заменит учетные данные в соответствии с настройками вашего почтового ящика.

Создание класса mailable в Laravel

В Laravel каждый тип email сообщения представлен как mailable класс. Для того, чтобы создать данный класс необходимо выполнить в терминале следующую команду:


php artisan make:mail FeedbackMail

Данная команда создаст FeedbackMail.php в каталоге App\Mail следующего содержания:


<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;

class FeedbackMail 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->view('view.name');
    }
}

Давайте добавим свойство $feedback в наш класс.

После:


use Queueable, SerializesModels;

Добавьте:


public $feedback;

Изменим метод __construct для того, чтобы передавать содержимое формы обратной связи в качестве параметра при создании экземпляра данного класса.


public function __construct($feedback)
{
    $this->feedback = $feedback;
}

И изменим метод build, в котором укажем blade-шаблон для наших сообщений:


return $this->view('emails.feedback');

Создание представления для email сообщений.

Для этого переходим в каталог resourсes/views и в нем создадим подкаталог emails. Теперь в каталоге emails создадим файл feedback.blade.php.

И добавим в него следующий код:


<div class="well col-sm-8">
    {{ $feedback }}
</div>

Ок. Мы готовы отправлять Email сообщения.

Проверка.

Для проверки создадим следующий роут. В файле routes/web.php добавьте следующий код:


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

Создайте контроллер FeedbackController и добавьте в него метод send


public function send() {
    $comment = 'Это сообщение отправлено из формы обратной связи';
    $toEmail = "test@mail.test";
    Mail::to($toEmail)->send(new FeedbackMail($comment));
    return 'Сообщение отправлено на адрес '. $toEmail;
}

И не забудьте предварительно указать:


use Illuminate\Support\Facades\Mail;
use App\Mail\FeedbackMail;

Вот и все. Сообщение отправлено.

Laravel для отправки email сообщений использует библиотеку SwiftMailer.

Понравилась статья? Поделись с друзьями.
  • Add to favorites
  • Добавить ВКонтакте заметку об этой странице
  • Twitter
  • Facebook
  • Мой Мир
  • LiveJournal
  • Одноклассники
  • Блог Я.ру
  • MySpace
  • FriendFeed
  • В закладки Google
  • Google Buzz
  • Яндекс.Закладки
  • Reddit
  • StumbleUpon
  • Technorati
  • del.icio.us
  • БобрДобр
  • LinkedIn
  • Memori.ru
  • Сто закладок
  • Blogger

©2012-2019 По всем вопросам обращайтесь через форму обратной связиПолитика конфиденциальности

Яндекс.Метрика