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

Отправка электронных писем с помощью PHP

Изучите, как отправлять электронные письма в PHP с помощью Emailit PHP SDK. От простых сообщений до шаблонов, вложений и отложенной отправки — всё с удобным современным API.
Отправка электронной почты с помощью PHP
Отправка электронной почты с помощью PHP

Отправка электронных писем из PHP традиционно означала борьбу с функцией mail(), настройку SMTP-серверов или подключение тяжелых зависимостей. Emailit PHP SDK предлагает чистую, современную альтернативу. Вы можете отправлять транзакционные письма, управлять доменами, проверять адреса и обрабатывать вебхуки — всё через простой API-клиент.

PHP остается одним из самых популярных языков для веб-разработки, а отправка электронных писем — базовое требование практически для любого PHP-приложения. Создаете ли вы SaaS-продукт, интернет-магазин или систему управления контентом — надежная доставка писем критически важна для регистрации пользователей, сброса паролей, подтверждения заказов и маркетинговых кампаний. Вместо использования встроенной функции PHP mail(), которая предоставляет ограниченный контроль и не гарантирует доставку, использование специализированного email API обеспечивает попадание ваших сообщений в папку «Входящие».

В этом руководстве мы пройдем через установку SDK и его использование для отправки писем из любого PHP-приложения.

Требования

Установка

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

composer require emailit/emailit-php

Emailit PHP SDK доступен как пакет Composer, поэтому легко интегрируется в любой PHP-проект, использующий Composer для управления зависимостями. Не требуется ручное подключение файлов или кастомные автозагрузчики.

Инициализация клиента

Создайте экземпляр клиента с вашим API-ключом:

require 'vendor/autoload.php';

$emailit = Emailit::client('your_api_key');

Ваш API-ключ можно найти в панели управления Emailit в разделе API Keys.

Отправка простого письма

Отправка письма выполняется одним вызовом метода:

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

echo $email->id;     // em_abc123...
echo $email->status; // pending

Все методы сервиса возвращают типизированные объекты ресурсов с прямым доступом к свойствам, поэтому вы всегда точно знаете, с чем работаете.

По сравнению с использованием встроенной функции PHP mail(), отправка писем через API дает вам отслеживание доставки, обработку отказов и подробную информацию о статусе каждого сообщения. Вам не нужно беспокоиться о настройке Sendmail или Postfix на сервере, и вы получаете надежную доставку через все основные почтовые провайдеры, такие как Gmail, Outlook и Яндекс.Почта.

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

Если вы создали шаблон в панели управления Emailit, можете ссылаться на него по слагу и передавать переменные:

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

Шаблоны позволяют вынести содержимое писем из кодовой базы и дают возможность не-разработчикам обновлять тексты без деплоя. Это особенно полезно для транзакционных писем, таких как приветственные сообщения, ссылки для сброса пароля, чеки и уведомления о доставке, где дизайн и формулировки меняются чаще, чем код, который их запускает.

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

Прикрепляйте файлы, передавая содержимое в base64:

$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',
        ],
    ],
]);

Вы можете прикреплять PDF, изображения, таблицы или любые другие типы файлов. Это часто используется для отправки счетов, отчетов или сгенерированных документов прямо из PHP-приложения без необходимости создавать отдельную ссылку для скачивания.

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

Передайте временную метку scheduled_at для отправки в будущем:

$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',
]);

echo $email->status;       // scheduled
echo $email->scheduled_at; // 2026-04-10T09:00:00Z

Запланированные письма можно отменить до отправки:

$emailit->emails()->cancel('em_abc123');

Планирование полезно для срочных коммуникаций, таких как напоминания о встречах, уведомления о продлении подписки и последовательные кампании, где время отправки так же важно, как и содержание.

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

Получите постраничный список ваших писем:

$emails = $emailit->emails()->list(['page' => 1, 'limit' => 10]);

foreach ($emails as $email) {
    echo $email->id . ' - ' . $email->status . "\n";
}

Повторите отправку неудачного письма:

$emailit->emails()->retry('em_abc123');

Полная видимость отправленных писем, их статуса доставки и возможность повторной отправки при сбоях дает уровень контроля, который функция PHP mail() просто не может обеспечить. Это критически важно для приложений, где каждое письмо имеет значение, например транзакционные чеки, ссылки для подтверждения аккаунта и коды двухфакторной аутентификации.

Проверка email-адресов перед отправкой

Сократите количество отказов, проверяя адреса заранее:

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

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

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

Обработка событий вебхуков

SDK включает типизированные классы событий и проверку подписи для вебхуков. Это позволяет реагировать на события доставки в реальном времени:

use Emailit\WebhookSignature;
use Emailit\Events\EmailDelivered;
use Emailit\Events\EmailBounced;

$event = WebhookSignature::verify(
    file_get_contents('php://input'),
    $_SERVER['HTTP_X_EMAILIT_SIGNATURE'],
    $_SERVER['HTTP_X_EMAILIT_TIMESTAMP'],
    'your_webhook_signing_secret'
);

match (true) {
    $event instanceof EmailDelivered => handleDelivered($event),
    $event instanceof EmailBounced   => handleBounce($event),
    default                          => log("Необработанное: {$event->type}"),
};

Вебхуки позволяют вашему PHP-приложению мгновенно реагировать на доставку, отказ, открытие или клик по письму. Это необходимо для создания событийно-ориентированных рабочих процессов, таких как обновление CRM при доставке сообщения, оповещение службы поддержки об отказах или отслеживание метрик вовлеченности для email-кампаний.

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

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

use Emailit\Exceptions\AuthenticationException;
use Emailit\Exceptions\RateLimitException;
use Emailit\Exceptions\UnprocessableEntityException;
use Emailit\Exceptions\ApiErrorException;

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

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

Не только письма

SDK дает доступ к полному API Emailit, не только к отправке. Вы можете управлять доменами, API-ключами, аудиториями, подписчиками, шаблонами, подавлениями, контактами и событиями — всё из PHP:

$domain = $emailit->domains()->create(['name' => 'example.com']);
$contact = $emailit->contacts()->create(['email' => 'user@example.com']);
$templates = $emailit->templates()->list();

Это делает Emailit PHP SDK полным набором инструментов для email-инфраструктуры. Вместо использования отдельных библиотек или сервисов для управления доменами, списками контактов и отправки писем, вы можете обрабатывать всё через единый, последовательный PHP-клиент.

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

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

composer require emailit/emailit-php

Ознакомьтесь с полной документацией SDK на GitHub или перейдите к справочнику 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