Отправка электронной почты через очередь Laravel

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

Во-первых: Создание настройки почты

на этом этапе необходимо создать представления страницы (view или шаблон) с расширением blade внутри папки resources/views/ с названием mailform.blade.php. На этой странице мы будем вводить электронную почту и в дальнейшем нужно будем отправлять письмо на данную почту.

...
<body>
<div class="contact-background"> 
<div class="contactussec">
<div class="container">
<div class="col-md-4">
<div class="contactformsec clearfix">
<form action="{{url('send')}}" method="post">
<input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">
<label> Ваш адрес электронной почты</label>
<input type="email" class="form-control" name="email">
<input type="submit" name="submit" value="Отправить" class="submit-btn">
</form>
</div>
</div>
</div>
</div>
</div>
</body>
...


2 шаг: Установка конфигурации в файле .env

В интернете можно найти подробную инструкцию по настройке smtp. Я использовал почту от mail.ru, Заменить {email} и {password} на свои данные

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mail.ru
MAIL_PORT=465
MAIL_USERNAME={email}
MAIL_PASSWORD={password}
MAIL_ENCRYPTION=ssl
MAIL_FROM_ADDRESS={email}
MAIL_FROM_NAME={password}


3 шаг: Добавление в файл URL маршрута.

Добавляем URL-адрес почтовой формы в файл маршрута routes/web.php. Ниже представлено, каким образом, можно добавить URL в файл маршрута.

Route::post('send','sendController@send');


Шаг 4: Создание файла контроллера

Создайте контроллер под названием sendController.php. После создания контроллера будет написан код почты.

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use Redirect;
use View;
use Mail;

class sendController extends Controller
{
public function send(request $req)
{
$mailid = $req->email;
$subject = 'News Information.';
$data = array('email' => $mailid, 'subject' => $subject);
Mail::send('emails.newsinfo', $data, function ($message) use ($data) {
$message->from('expertsphp@gmail.com', 'News Information');
$message->to($data['email']);
$message->subject($data['subject']); 
});
return redirect()->back()->with('message','Сообщение успешно отправлено');
}
}


Затем нужно создать представление для самого письма - emails.newsinfo. Это делается в папке resources/views/emails/newsinfo.blade.php

<!DOCTYPE html>
<html lang="en">
<head>
<title>News Info</title>
</head>
<body>
<h1> Отправка электронного письма, используя Laravel</h1>
<p>Ваша почта - {{$email}}</p>
<p>Ваша тема- {{$subject}}</p>
</body>
</html>



ВВЕРХ