{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"7482e402-cba9-4b3b-92ea-25ee07b9cb0d","name":"СамОтправил API Документация","description":"API-документация [российского SMTP-сервиса СамОтправил](https://samotpravil.ru/). Сервис ориентирован на интеграцию с SaaS-решениями. Рекомендуем ознакомиться с [особенностями интеграции](https://samotpravil.ru/blog/osobennosti-integracii-smtp). Также вы можете [обсудить интеграцию](https://samotpravil.ru/demo) с нашими специалистами.\n\n## Готовые библиотеки\n\n- [Python](https://pypi.org/project/samotpravil/). Автор: Команда SamOtpravil\n    \n- [PHP](https://github.com/kostikpenzin/samotpravil). Автор: Константин Пензин\n    \n- [Ruby](https://rubygems.org/gems/mailganer-client). Автор: Сообщество [Rubyschool](https://t.me/rubyschool)\n    \n\n## Авторизация\n\nАвторизация происходит через использование API-ключа в заголовке `Authorization: {{api_key}}`\n\nЧтобы получить API ключ к SMTP методам, отправьте [запрос.](https://samotpravil.ru/get-access)\n\n## Лимиты\n\n### Лимиты на запросы\n\nК SMTP можно обращаться не более **10 000** раз в минуту.\n\nВ случае превышения лимита, вы получите ошибку с кодом **`429`**.  \n`{\"status\":\"throttling\",\"error\":\"Request was throttled. Expected available in 1 second.\"}`  \nНапишите нам, если требуется увеличить лимит.\n\nСреднее время выполнения одного запроса 500мс.\n\n### Лимиты на отправки\n\nВсе рассылки при создании имеют ограничение `100 писем \\ 5 минут`\n\nПри превышении лимита, вы получите ошибку `450 ratelimit exceeded`  \nНапишите в поддержку, чтобы увеличить лимит.\n\n### Лимиты на создание пакетов\n\nВсе рассылки при создании имеют ограничение `40 пакетов \\ 5 минут`\n\nПри превышения лимита, вы получите ошибку `E429`Напишите в поддержку, чтобы увеличить лимит.\n\n### Лимит на размер письма\n\nСтандартный лимит на размер письма - 50mb\n\n## Настройки\n\nSMTP сервер: `{{host}}`  \nПорт: `1126` или `1127` (TLS)\n\n## Треккинг открытий и кликов\n\nДля отслеживания кликов оберните все ссылки в в следующий редирект\n\n``` html\n[domain]/click/[X-Track-ID]?goto_url=[url]\n\n ```\n\nДля отслеживания открытий добавьте следующую конструкцию в контент письма\n\n``` html\nimg src=\"[domain]/open/[X-Track-ID]\" alt=\"\" height=\"1\" width=\"1\" border=\"0\"\n\n ```\n\n**X-Track-ID** это ваш внутренний ID отправки, нужно также его передавать и в заголовок письма. Должен быть уникальным для каждой отправки.  \nХорошая практика формирования X-Track-ID -\n\n`{{login}}-{{timestamp}}-{{your_campaign_id}}-{{your_email_id}}`\n\n- `login` - ваш логин к SMTP\n    \n- `timestamp` - временная метка запроса\n    \n- `your_campaign_id` - ID рассылки \\\\ имейл-кампании\n    \n- `your_email_id` - ID конкретной отправки\n    \n\n**url** это целевая ссылка  \n**domain** это track.smtprvl.ru или ваш домен\n\nДля настройки вашего домена обратитесь в поддержку.\n\n> Все значения для переменных формируются на вашей стороне.  \nСамОтправил не взаимодействует с контентом писем.  \nЕсли вам нужна поддержка передаваемых переменных, [воспользуйтесь API](https://documenter.getpostman.com/view/26779685/2s93RZM9in#d38df6bc-71da-4445-a1eb-bbc299138836) \n  \n> Ознакомьтесь подробнее с тем, какие бывают ошибки и с нашей [политикой ретраев](https://mailganer.com/ru/explanation/oshibki-nedostavki) \n  \n> Если в копии есть имейл, находящийся в стоп-листе, то отправка не будет произведена ни на один имейл \n  \n> Обратите внимание, что если имейл находится в любом из стоп-листов, при попытке отправить письмо на этот адрес, вы будете получать ошибку 550 bounced check filter. Каждый такой запрос будет тарифицироваться системой, настройте соответствующую обработку ошибок.  \nВ ответе также будет присутствовать поле ttl_date, в нем указана дата выхода имейла из стоп-листа. Если имейл находится в стоп-листе без возможности выхода, в ответе вы получите  \n\"ttl_date\": \"0\" \n  \n\n## Популярные ошибки\n\n| Ошибка | Причина |\n| --- | --- |\n| 550 bounced check filter | Имейл получателя находится в стоп-листе. [Подробнее про работу стоп-листов](https://mailganer.com/ru/explanation/stop-listy-smtp) |\n| 501 from domain not trusted | Домен, с которого производится отправка, не добавлен в список разрешенных |\n| 421 SMTP command timeout - closing connection | Если сделать подключение, отправить письмо, не закрыть его для дальнейшего переиспользования, и ничего не писать более 120s, то сервер запишет 421 ошибку и закроет соединение. |\n| 450 ratelimit exceeded | Превышен лимит запросов на отправку. Для новых клиентов ограничение 100 запросов в 5 минут. Напишите в поддержку, чтобы увеличить лимит |\n\n## Кастомный Return-Path\n\nЕсли Ваше програмное обеспечение работает с VERP форматом, создайте запрос на подключение выделенного сендера с этой фичей.\n\n> Формат VERP (Variable Envelope Return Path) - это метод в электронной почте, который позволяет почтовым серверам уникально идентифицировать каждого получателя массовой рассылки, встраивая его адрес в обратный путь (envelope sender), что упрощает управление баунсами и удаление недействительных адресов без парсинга содержимого писем. Если письмо не доставляется, обратный адрес (bounce message) содержит информацию о том, кому именно оно предназначалось, позволяя автоматически отписать неработающий адрес. \n  \n\nПример заголовка Return-Path в VERP-формате:  \n`Return-Path: bounce+fd1ba13a+rcptname=mail.ru@samotpravil.ru`","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"26779685","team":6298892,"collectionId":"7482e402-cba9-4b3b-92ea-25ee07b9cb0d","publishedId":"2s93RZM9in","public":true,"publicUrl":"https://documentation.samotpravil.ru","privateUrl":"https://go.postman.co/documentation/26779685-7482e402-cba9-4b3b-92ea-25ee07b9cb0d","customColor":{"top-bar":"FFFFFF","right-sidebar":"22223b","highlight":"c55de0"},"documentationLayout":"classic-double-column","customisation":{"metaTags":[{"name":"description","value":"Ознакомьтесь с API документацией сервиса СамОтправил"},{"name":"title","value":"СамОтправил API документация SMTP сервиса"}],"appearance":{"default":"light","themes":[{"name":"dark","logo":"https://content.pstmn.io/d7c909e5-2d3e-47b7-9ed9-306b2219bfe3/dHh0XzIucG5n","colors":{"top-bar":"22223B","right-sidebar":"22223B","highlight":"C55DE0"}},{"name":"light","logo":"https://content.pstmn.io/62261cfc-5c5f-49ed-b4a6-81c1e0199fcf/dHh0LnBuZw==","colors":{"top-bar":"FFFFFF","right-sidebar":"22223b","highlight":"c55de0"}}]}},"version":"8.10.1","publishDate":"2024-12-17T07:06:59.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{"title":"СамОтправил API документация SMTP сервиса","description":"Ознакомьтесь с API документацией сервиса СамОтправил"},"logos":{"logoLight":"https://content.pstmn.io/62261cfc-5c5f-49ed-b4a6-81c1e0199fcf/dHh0LnBuZw==","logoDark":"https://content.pstmn.io/d7c909e5-2d3e-47b7-9ed9-306b2219bfe3/dHh0XzIucG5n"}},"statusCode":200},"environments":[],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/d71f6a2fc19584190d20c88740b1a690212afd7d3440ac1c164f53ff7388dbc7","favicon":"https://samotpravil.ru/favicon.ico"},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"}],"canonicalUrl":"https://documentation.samotpravil.ru/view/metadata/2s93RZM9in"}