Email API и SMTP могут передать письмо сервису отправки, но это разные интерфейсы интеграции. SMTP — стандартный протокол, который поддерживают почти все почтовые библиотеки и приложения. Email API работает через HTTPS и предоставляет специфичные функции сервиса в виде структурированного JSON.
Сам по себе выбор интерфейса не улучшает попадание во входящие. На доставляемость влияют репутация, аутентификация, качество базы, контент, характер отправки и инфраструктура за интерфейсом.
Email API и SMTP: краткое сравнение
| Критерий | Email API | SMTP |
|---|---|---|
| Транспорт | HTTPS, обычно JSON | SMTP submission через STARTTLS или implicit TLS |
| Переносимость | Контракт конкретного сервиса | Широко стандартизирован |
| Работа с кампаниями | ID, списки, статистика и ответы | Обычно только передача сообщения |
| Поддержка приложениями | Нужна HTTP-интеграция или SDK | Работает со стандартными SMTP-клиентами |
| Ошибки | HTTP-код и JSON | SMTP 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 во всей почтовой сети.