Email API и SMTP могут передать письмо сервису отправки, но это разные интерфейсы интеграции. SMTP — стандартный протокол, который поддерживают почти все почтовые библиотеки и приложения. Email API работает через HTTPS и предоставляет специфичные функции сервиса в виде структурированного JSON.

Сам по себе выбор интерфейса не улучшает попадание во входящие. На доставляемость влияют репутация, аутентификация, качество базы, контент, характер отправки и инфраструктура за интерфейсом.

Email API и SMTP: краткое сравнение

КритерийEmail APISMTP
ТранспортHTTPS, обычно JSONSMTP submission через STARTTLS или implicit TLS
ПереносимостьКонтракт конкретного сервисаШироко стандартизирован
Работа с кампаниямиID, списки, статистика и ответыОбычно только передача сообщения
Поддержка приложениямиНужна HTTP-интеграция или SDKРаботает со стандартными SMTP-клиентами
ОшибкиHTTP-код и JSONSMTP reply codes и ошибки соединения
Лучший сценарийАвтоматизация и управление кампаниямиГотовое ПО и переносимая отправка

Что такое email API?

Email API принимает авторизованные HTTPS-запросы. Приложение отправляет структурированный payload, сервис валидирует его, создаёт ресурс или задачу и возвращает HTTP-ответ.

API Bulko ориентирован на кампании: импорт получателей, запуск, статистика, классифицированные ответы, баланс и сведения об отдельно купленном SMTP Access. Это не означает, что каждой SMTP-команде соответствует REST endpoint.

response = requests.post(
    "https://bulko.io/api/v1/campaigns/launch",
    headers={"Authorization": f"Bearer {token}"},
    json={
        "name": "Requested update",
        "subject": "Your requested update",
        "body": "<p>Here is the information.</p>",
        "recipients": ["[email protected]"],
    },
    timeout=30,
)
response.raise_for_status()
campaign_id = response.json()["id"]

Авторизация, импорт, polling, ответы и ошибки разобраны в руководстве по API Bulko для Python и cURL.

Что такое SMTP submission?

Приложение авторизуется на relay и передаёт ему сообщение по SMTP. Стандартная конфигурация submission — порт 587 с STARTTLS; порт 465 использует implicit TLS. Порт 25 предназначен прежде всего для обмена между серверами и часто закрыт в хостинговых сетях.

import smtplib
from email.message import EmailMessage

message = EmailMessage()
message["From"] = "[email protected]"
message["To"] = "[email protected]"
message["Subject"] = "Your requested update"
message.set_content("Here is the information you requested.")

with smtplib.SMTP("smtp.bulko.io", 587, timeout=30) as smtp:
    smtp.starttls()
    smtp.login(smtp_username, smtp_password)
    smtp.send_message(message)

SMTP Access Bulko — отдельный приобретаемый доступ. Он подходит приложению, которое уже умеет работать с SMTP и не требует списков кампании, классификации ответов или ресурсов, управляемых через API.

Выбирайте API, если

  • приложению нужны кампании и их постоянные ID;
  • в workflow входят импорт базы и отчёт о suppression;
  • нужно программно получать статистику и классифицированные ответы;
  • структурированные JSON-ошибки удобнее для интеграции;
  • команда готова поддерживать версионированный контракт сервиса.

Выбирайте SMTP, если

  • CRM, CMS или monitoring tool уже предлагает SMTP-настройки;
  • переносимость между relay важнее управления кампаниями;
  • система отправляет отдельные письма через стандартную библиотеку;
  • приложение самостоятельно обрабатывает сообщения, повторы и события;
  • не нужны импорт базы и API классификации ответов.

Безопасность

Оба интерфейса используют секреты. API-токены и SMTP-пароли нужно хранить на сервере в secret manager, разделять по системам и регулярно отзывать неиспользуемые. Нельзя помещать их в браузерный JavaScript или репозиторий.

Для API нужен HTTPS, для SMTP — STARTTLS или implicit TLS. Шифрование соединения не заменяет SPF, DKIM, DMARC, suppression и ротацию доступов.

Ошибки и повторные попытки

API возвращает HTTP 400 для неправильного запроса, 401 для авторизации, 402 при нехватке кредитов, 403 при блокировке контента, 404 для недоступного ресурса пользователя и 429 при превышении лимита. Постоянные 4xx нельзя повторять без исправления. Для 429 соблюдайте Retry-After.

В SMTP ответы 4xx обычно временные, а 5xx — постоянные, но нужно учитывать enhanced status code и текст. Потеря соединения после передачи может оставить неоднозначный результат, поэтому необходимы дедупликация и сверка статуса.

Можно ли использовать оба интерфейса?

Да. SMTP может обслуживать программы, которые понимают только настройки почтового сервера, а REST API — кампании, отчётность и ответы. Разделяйте доступы и не отправляйте одно логическое сообщение одновременно двумя путями.

Если выбираете между relay-сервисом и прямой доставкой на MX получателя, читайте SMTP relay и direct sending. Это инфраструктурный вопрос, а не API против SMTP.

Что выбрать в Bulko

REST API Bulko подходит для managed campaign workflow: списков, запуска, статистики, ответов и баланса. SMTP Access нужен, когда приложению требуется стандартный SMTP-доступ. Исходящие webhooks пока недоступны в production, поэтому статистику и ответы следует проверять через polling с backoff.

Перед интеграцией изучите документацию API и интеграций, OpenAPI и актуальные варианты отправки.

Частые вопросы

Email API быстрее SMTP?

HTTPS может упростить запрос, но общее время зависит от очереди, rate limits и принимающих серверов. Один интерфейс не гарантирует более быструю доставку.

API улучшает доставляемость?

Нет. API и SMTP могут использовать одну инфраструктуру. Репутация, аутентификация, получатели и практика отправки важнее.

SMTP устарел?

Нет. SMTP остаётся стандартным транспортом между почтовыми системами и широко поддерживаемым submission-интерфейсом. API добавляет управление на уровне приложения, но не заменяет SMTP во всей почтовой сети.