Локализовано с помощью ИИ
Руководства • MARCH 4, 2026

Отправка электронных писем в Laravel

Узнайте, как отправлять электронные письма в Laravel с помощью пакета Emailit Laravel. Интегрируется как встроенный почтовый транспорт и предоставляет полный доступ к API Emailit через фасад.
Отправка электронных писем с помощью Laravel
Отправка электронных писем с помощью Laravel

Laravel поставляется с отличной поддержкой почты из коробки, но вам всё равно нужен надёжный сервис доставки. Пакет Emailit Laravel интегрируется напрямую в почтовую систему Laravel как нативный транспорт. Ваши существующие Mailables, уведомления и вызовы Mail::send() работают без изменений в коде. Кроме того, вы получаете полный доступ к API Emailit через удобный Facade.

Отправка электронных писем — одна из самых распространённых задач в любом Laravel-приложении. Подтверждения регистрации пользователей, сброс паролей, чеки заказов, уведомления о доставке и маркетинговые рассылки — всё это зависит от надёжной доставки писем. Хотя Laravel предоставляет мощный слой абстракции для работы с почтой, фактическая доставка всё равно зависит от настроенного транспорта. Использование почтового API вроде Emailit даёт вам высокую доставляемость, отслеживание доставки, управление отказами и подробную аналитику без необходимости управлять SMTP-серверами или беспокоиться о репутации IP-адресов.

В этом руководстве мы пройдём через настройку Emailit в Laravel-приложении и отправку писем как через стандартную почтовую систему Laravel, так и через Facade Emailit.

Требования

Установка

Установите пакет через Composer:

composer require emailit/emailit-laravel

Пакет автоматически регистрирует свой сервис-провайдер, поэтому ручная регистрация не нужна. Он работает с Laravel 10, 11 и 12 из коробки.

Настройка

Добавьте ваш API-ключ в .env:

EMAILIT_API_KEY=your_api_key

Установите Emailit как почтовик по умолчанию:

MAIL_MAILER=emailit

Добавьте почтовик emailit в массив mailers в config/mail.php:

'mailers' => [
    // ...

    'emailit' => [
        'transport' => 'emailit',
    ],
],

При желании опубликуйте конфигурационный файл для настройки базового URL API:

php artisan vendor:publish --tag=emailit-config

Конфигурация намеренно минимальна. После установки API-ключа и почтовика по умолчанию Laravel будет автоматически направлять всю исходящую почту через Emailit. Нет необходимости настраивать SMTP-хосты, порты, параметры шифрования или учётные данные аутентификации, как при работе с традиционными почтовыми серверами.

Отправка писем через Laravel Mail

После настройки все почтовые функции Laravel работают из коробки. Ничего в существующем коде менять не нужно.

Использование Mailable

Создайте класс Mailable как обычно:

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Mail\Mailables\Content;
use Illuminate\Mail\Mailables\Envelope;
use Illuminate\Queue\SerializesModels;

class WelcomeEmail extends Mailable
{
    use Queueable, SerializesModels;

    public function __construct(
        public readonly User $user,
    ) {}

    public function envelope(): Envelope
    {
        return new Envelope(
            subject: 'Добро пожаловать в наше приложение',
        );
    }

    public function content(): Content
    {
        return new Content(
            view: 'emails.welcome',
        );
    }
}

Затем отправьте его:

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

Mail::to('user@example.com')->send(new WelcomeEmail($user));

Очереди писем, Markdown-письма и уведомления работают именно так, как вы ожидаете. Emailit прозрачно встраивается в почтовый слой Laravel, поэтому вы можете заменить им любой существующий транспорт вроде SMTP, Mailgun или SES без изменения кода приложения. Это упрощает тестирование Emailit наряду с текущим провайдером или постепенную миграцию.

Использование Facade Emailit

Для функций, выходящих за рамки почтовой системы Laravel, таких как шаблоны с переменными, отложенная отправка или управление API-ресурсами, используйте Facade Emailit. Он даёт прямой доступ к полному Emailit PHP SDK.

Отправка письма через API

use Emailit\Laravel\Facades\Emailit;

$email = Emailit::emails()->send([
    'from'    => 'hello@yourdomain.com',
    'to'      => ['user@example.com'],
    'subject' => 'Привет от Emailit',
    'html'    => '<h1>Добро пожаловать!</h1>',
]);

echo $email->id;
echo $email->status;

Отправка с шаблоном

Используйте шаблоны, созданные в панели управления Emailit, и передавайте динамические переменные:

use Emailit\Laravel\Facades\Emailit;

$email = Emailit::emails()->send([
    'from'      => 'hello@yourdomain.com',
    'to'        => 'user@example.com',
    'template'  => 'welcome_email',
    'variables' => [
        'name'    => 'Иван Иванов',
        'company' => 'ООО "Рога и копыта"',
    ],
]);

Использование серверных шаблонов — мощный подход для Laravel-приложений. Ваши дизайнеры и маркетологи могут обновлять содержимое, стили и макет писем в панели управления Emailit без изменений кода или новых развёртываний. PHP-код должен только передавать данные, а шаблон обрабатывает рендеринг.

Планирование отправки письма

use Emailit\Laravel\Facades\Emailit;

$email = Emailit::emails()->send([
    'from'         => 'reminders@yourdomain.com',
    'to'           => 'user@example.com',
    'subject'      => 'Напоминание о встрече',
    'html'         => '<p>Ваша встреча завтра в 14:00.</p>',
    'scheduled_at' => '2026-04-10T09:00:00Z',
]);

Запланированные письма полностью обрабатываются API Emailit, что означает их независимость от системы очередей Laravel. Это идеально для напоминаний о встречах, уведомлений о продлении подписки и срочных кампаний, где нужна гарантированная доставка в определённое время, даже если сервер приложения недоступен.

Отправка с вложениями

use Emailit\Laravel\Facades\Emailit;

$email = Emailit::emails()->send([
    'from'        => 'invoices@yourdomain.com',
    'to'          => 'customer@example.com',
    'subject'     => 'Ваш счёт №12345',
    'html'        => '<p>Счёт во вложении.</p>',
    'attachments' => [
        [
            'filename'     => 'invoice.pdf',
            'content'      => base64_encode(file_get_contents('invoice.pdf')),
            'content_type' => 'application/pdf',
        ],
    ],
]);

Управление ресурсами

Facade предоставляет доступ ко всем сервисам API Emailit, позволяя управлять всей почтовой инфраструктурой из Laravel.

Домены

use Emailit\Laravel\Facades\Emailit;

$domain = Emailit::domains()->create([
    'name' => 'example.com',
    'track_loads' => true,
    'track_clicks' => true,
]);

$domain = Emailit::domains()->verify('sd_123');

Управление доменами отправки через API полезно для SaaS-платформ, которым нужно настраивать пользовательские домены для каждого клиента. Вы можете автоматизировать весь процесс верификации домена, включая проверку DNS-записей, прямо из Laravel-приложения.

Контакты

use Emailit\Laravel\Facades\Emailit;

$contact = Emailit::contacts()->create([
    'email' => 'user@example.com',
    'first_name' => 'Иван',
    'last_name' => 'Иванов',
]);

$contacts = Emailit::contacts()->list();

Проверка email-адресов

use Emailit\Laravel\Facades\Emailit;

$result = Emailit::emailVerifications()->verify([
    'email' => 'test@example.com',
]);

echo $result->status; // valid
echo $result->risk;   // low

Проверка email-адресов при регистрации или заполнении форм помогает поддерживать чистый список контактов и защищает репутацию отправителя. Высокий процент отказов от недействительных адресов может привести к попаданию ваших писем в спам, поэтому проверка — лучшая практика для любого Laravel-приложения, отправляющего транзакционные или маркетинговые письма в больших объёмах.

Внедрение зависимостей

Если вы предпочитаете не использовать Facades, можете внедрить клиент напрямую:

use Emailit\EmailitClient;

class EmailController extends Controller
{
    public function send(EmailitClient $emailit)
    {
        $email = $emailit->emails()->send([
            'from'    => 'hello@yourdomain.com',
            'to'      => ['user@example.com'],
            'subject' => 'Привет',
            'html'    => '<p>Здравствуйте!</p>',
        ]);

        return response()->json(['id' => $email->id]);
    }
}

Сервис-контейнер Laravel автоматически разрешает экземпляр EmailitClient с API-ключом из конфигурации, поэтому вы получаете то же удобство, что и с Facade, плюс преимущества внедрения зависимостей для тестирования.

Обработка ошибок

Базовый PHP SDK выбрасывает типизированные исключения, поэтому вы можете ловить конкретные типы ошибок:

use Emailit\Exceptions\AuthenticationException;
use Emailit\Exceptions\RateLimitException;
use Emailit\Exceptions\ApiErrorException;
use Emailit\Laravel\Facades\Emailit;

try {
    Emailit::emails()->send([...]);
} catch (AuthenticationException $e) {
    // Неверный API-ключ (401)
} catch (RateLimitException $e) {
    // Слишком много запросов (429)
} catch (ApiErrorException $e) {
    // Любая другая ошибка API
    echo $e->getHttpStatus();
}

В Laravel-приложении вы также можете обрабатывать эти исключения глобально в обработчике исключений или использовать middleware для перехвата ошибок лимита запросов и реализации автоматической логики повторных попыток. Это обеспечивает устойчивость приложения даже при отправке больших объёмов писем.

Все доступные сервисы

Facade даёт доступ ко всему функционалу API Emailit:

СервисИспользованиеОписание
EmailsEmailit::emails()Отправка, список, получение, отмена, повтор писем
DomainsEmailit::domains()Создание, верификация, список, управление доменами отправки
API KeysEmailit::apiKeys()Создание, список, управление API-ключами
AudiencesEmailit::audiences()Создание, список, управление аудиториями
SubscribersEmailit::subscribers()Добавление, список, управление подписчиками
TemplatesEmailit::templates()Создание, список, публикация шаблонов писем
SuppressionsEmailit::suppressions()Создание, список, управление заблокированными адресами
Email VerificationsEmailit::emailVerifications()Проверка email-адресов
Email Verification ListsEmailit::emailVerificationLists()Массовая проверка email-адресов
WebhooksEmailit::webhooks()Создание, список, управление вебхуками
ContactsEmailit::contacts()Создание, список, управление контактами
EventsEmailit::events()Список и получение событий

Начало работы

Установите пакет и начните отправлять письма менее чем за минуту:

composer require emailit/emailit-laravel

Ознакомьтесь с полной документацией пакета на GitHub, Emailit PHP SDK для базового клиента или перейдите к справочнику API для подробностей по каждой конечной точке.

Блог

Последние новости и обновления напрямую от Emailit.

Будьте в курсе последних статей из блога Emailit.

Похожие статьи

Последние статьи, руководства и новости от команды Emailit

Изменения лимитов скорости
Объявления
8 мин чтения

Изменения лимитов скорости

С введением API v2 мы внесли изменения в систему лимитов скорости отправки.

Oct 10, 2025
Новая документация
Объявления
10 мин чтения

Новая документация

Единое место для поиска всей информации, необходимой для начала работы с Emailit.

Oct 12, 2025
API для верификации email теперь доступен
Объявления
2 мин чтения

API для верификации email теперь доступен

Проверяйте email-адреса перед отправкой с помощью нашего нового API для верификации почты. Сократите количество отказов и защитите репутацию отправителя.

Feb 3, 2026