Привет, я Михаил.
Работаю веб-разработчиком и занимаюсь интернет-проектами: от сайтов и интерфейсов до систем автоматизации.
Отправить мне сообщение

Отправка почты в Laravel

Недавно понадобилось реализовать простую отправку почту в Laravel.

Хотелось реализовать всё максимально просто, безо всяких Mailable и пр. Также нужно, чтобы почта отправлялась с почтового ящика вида noreply@mydomain.ru, чтобы отправлять пользователям служебные оповещения, на которые не нужно отвечать.

Так как Laravel и домен крутятся на хостинге beget, почтовый ящик я создал там же.

Для того, чтобы удостовериться, что я использую верные данные для отправки писем по SMTP, я воспользовался сервисом SMTPer.

Упрощённый код контроллера:

<?php
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Mail;
use Illuminate\Http\Request;

class XController extends Controller
{
  protected function x(Request $request)
  {
    Mail::raw('Привет', function($message)
    {
      $message->from(env('MAIL_USERNAME', ''), 'Vasya Pupkin');
      $message->to('vasya@yandex.ru');
    });
  }
}

Примерный config/main.php:

<?php
return [
    'driver' => env('MAIL_DRIVER', 'smtp'),
    'host' => env('MAIL_HOST', ''),
    'port' => env('MAIL_PORT', 25),
    'from' => [
        'address' => env('MAIL_FROM_ADDRESS', ''),
        'name' => env('MAIL_FROM_NAME', ''),
    ],
    'encryption' => env('MAIL_ENCRYPTION', ''),
    'username' => env('MAIL_USERNAME', ''),
    'password' => env('MAIL_PASSWORD', ''),

    'sendmail' => '/usr/sbin/sendmail -bs',

    'markdown' => [
        'theme' => 'default',

        'paths' => [
            resource_path('views/vendor/mail'),
        ],
    ],
];

Часть .env для настройки почты:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.beget.com
MAIL_PORT=25
MAIL_USERNAME=noreply@mydomain.ru
MAIL_FROM_ADDRESS=noreply@mydomain.ru
MAIL_FROM_NAME=Vasya
MAIL_PASSWORD=qwerty
MAIL_ENCRYPTION=