Недавно понадобилось реализовать простую отправку почты в Laravel.
Хотелось реализовать всё максимально просто, безо всяких Mailable и пр. Также нужно, чтобы почта отправлялась с почтового ящика вида noreply@mydomain.ru, чтобы отправлять пользователям служебные оповещения, на которые не нужно отвечать.
Так как Laravel и домен крутятся на хостинге beget.ru, почтовый ящик я создал там же.
Для того, чтобы удостовериться, что я использую верные данные для отправки писем по 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=