На нашем сайте мы используем cookie для сбора информации технического характера и обрабатываем IP-адрес вашего местоположения. Продолжая использовать этот сайт, вы даете согласие на использование файлов cookies. Здесь вы можете узнать, как мы пользуемся файлами cookies.
Я согласен
логотип upread.ru

Урок 7. Простая отправка email в Laravel через smtp


Сейчас вы узнаете, как отправлять письма на электронную почту с сайта, созданного на Laravel (код актуален для версии 8) по smtp. Настройки для отправки по смтп (отправляем через имеющийся ящик на майл ру). Все уроки по Laravel - тут.

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mail.ru
MAIL_PORT=465
MAIL_USERNAME=почта@отправителя
MAIL_PASSWORD= пароль
MAIL_ENCRYPTION=ssl
MAIL_FROM_ADDRESS= почта@отправителя
MAIL_FROM_NAME="${APP_NAME}"
Для начала мы создадим авторизацию из коробки (чтобы зайти на страницу могли только авторизованные). Конечно, можно сделать это в контроллере (мы научились), но теперь сделаем на уровне роутера. В shell выполним команду

php artisan ui vue –auth
В роутинге можно увидеть новые строки:

Auth::routes();

Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home');
Теперь создадим свое правило для перенаправления на нужный контроллер

use App\Http\Controllers\SendMailController;

……………

// Только аутентифицированные пользователи могут зайти и отправить
Route::get('/send-email', 
  [SendMailController::class, 'index']
)->middleware('auth');

Route::post('/send-email', 
function (Request $request) {
	$sm = new SendMailController();
	return $sm->send($request['message']);
}
)->middleware('auth');
И при заходе на http://localhost/new_project/public/send-email видим вот такую симпатичную форму:



Далее надо создать класс mailable

php artisan make:mail SendMail
По адресу app/Mail появится файл SendMail.php, поменяем его код немного

<?php

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;

class SendMail extends Mailable
{
    use Queueable, SerializesModels;

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

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->view('emails.main', ['mess' => $this->mess]);
    }
}
А да, надо создать сам контроллер SendMail.php

<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Mail;
use App\Mail\SendMail;

class SendMailController extends Controller
{
	
	 public function index() {
		return view('send-email');
	}
	
    public function send($message) {
		$toEmail = "получатель@yandex.ru";

		$mm = new SendMail($message);
		Mail::to($toEmail)->send(new SendMail($message));
		
		return redirect()
				->back()
				->with('mess', "Сообщение $message отправлено");
	}
}
Теперь представление для письма main.blade.php:

<div class="well col-sm-8">
	{{ $mess }}
</div>
И представление для страницы отправки письма send-email.blade.php:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
		<link href="css/app.css" rel="stylesheet">
        <title>Отправка email</title>
</head>
<body>
<div class="container">
<div class="row">
<form method="POST" action="">
@csrf
		@if(Session::has('mess'))
		<p class="alert {{ Session::get('alert-class', 'alert-info') }}">{{ Session::get('mess') }}</p>
		@endif
 
	<div class="form-group">
		<input id="message" type="text" class="form-control" name="message" required >
	</div>
	
	 <div class="form-group">
		<button type="submit" class="btn btn-primary">Отправить</button>
	</div>
</form>
</div>
</div>
<script src="js/app.js"></script>
</body>
</html>
Сейчас заходим, набираем текст в текстовом поле, нажимаем «Отправить» и получаем сообщение:



Проверяем:



Отлично, все пришло.



Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.



тегистатьи IT, уроки по Laravel, laravel, email, отправка письма

Читайте также:




Урок 15. Конкатенация строк с переменными JavaScript
Исторический роман о Распутине


© upread.ru 2013-2021
При перепечатке активная ссылка на сайт обязательна.
Задать вопрос
письмо
Здравствуйте! Вы можете задать мне любой вопрос. Если не получается отправить сообщение через эту форму, то пишите на почу up777up@yandex.ru
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.