Обязательные первичные настройки и время вступления в силу изменений
Для отправки рассылок необходимо внести записи в DNS домена от лица которого будут отправляться письма, домен должен соответствовать полю FROM (от кого) в письмах рассылок.

Пример:

Письмо рассылается от лица «Интернет-магазин 1432 shop@1432.ru» значит в DNS домена 1432.ru необходимо внести изменения

DkimKey
out._domainkey IN TXT "v=DKIM1; k=rsa; p=a334ex23sret3QzG10X1234..."

SPF
IN TXT "v=spf1 ip4:111.11.11.100/11 ip4:111.11.11.105/11 ip4:111.11.11.107/11 ip4:111.11.11.108/11 ?all"

DMARC
IN TXT _dmarc.domain IN TXT "v=DMARC1; p=none"
Внимание!
Перед настройкой DkimKey необходимо запросить у нас данные ключа.
Пошаговая настройка DKIMKEY
Шаг 1

Шаг 2

Шаг 3
Добавления записей

Остальные записи: SPF и DMARC добавляются аналогичным образом
Без внесения данных изменений корректная рассылка НЕВОЗМОЖНА!
Письма рассылки будет приходить с неверными RFC-заголовками и будут отвергнуты почтовыми системами.
После внесения изменений, необходимо сообщить об этом в службу поддержки сервиса GET-N-POST непосредственно менеджеру с которым работает ваша компания, мы внесем аналогичные изменения для вашего домена на своей стороне.
Вступление в силу изменений происходит обычно в течение 2-6 часов (максимально 24 часа).

Обязательное тестирование после внесения изменений
После внесения всех изменений в DNS, необходимо сделать несколько тестовых рассылок на адреса сервиса (вам их укажет менеджер) и собственные адреса.
После успешной рассылки тестов в обязательном порядке необходимо прислать RFC заголовки менеджеру для контроля их корректности
В зависимости от почтового клиента, посмотреть заголовки можно в меню «Сообщения — Полные заголовки», если вы пользуетесь он-лайн клиентами (например mail.ru) то заголовки можно посмотреть здесь:
Без финального согласования с менеджером сервиса рассылка сообщений — НЕВОЗМОЖНА!
Если вы планируете выпускать свои рассылки через сервис на постоянной основе, все вышеописанные настройки необходимо делать один раз, после чего рассылки можно выпускать тогда, когда в этом есть необходимость.
Если необходимо для рассылки считать не только количество отправлены писем и количество открытых, но и клики — об этом необходимо сообщить заранее, чтобы такая функция была включена!

Введение
API Get-N-Post - сервис, предоставляющий информационно-технические услуги по организации рассылки тематических сообщений электронной почты группе адресатов.
Работа с сервисом может осуществляться через web-интерфейс сайта «http://get-n-post.com» с использованием авторизационной информации автора (идентификатор рассылки + пароль) или через программный интерфейс с использованием секретного ключа.

Основные понятия и термины
Пользователь — юридическое лицо, зарегистрированное в Системе.
Аккаунт — учетная запись пользователя для осуществления и учета операций внутри Системы.
Веб-интерфейс — совокупность информации и средств навигации на сайте Системы для управления аккаунтом и рассылками пользователя
API (программный интерфейс) — набор команд для управления аккаунтом без использования веб-интерфейса.
Ключ доступа — последовательность символов, используемых для подтверждения подлинности пользователя, работающего с API Системы.
Пакет — набор информации о подписчиках рассылок Пользователя в формате Системы.

Доступ к API
Для работы с сервисом через программный интерфейс необходимо:

  1. Предварительно подать заявку на подключение на get-n-post.com
  2. Заключить договор на предоставление услуг
  3. Получить ключ доступа от технических специалистов сервиса
  4. В дальнейшем этот ключ используется для выполнения всех операций с сервисом
Важно!
При изменении IP-адреса сервера, который будет взаимодействовать с программным интерфейсом Системы, необходимо получить новый ключ
Возможна настройка генерации рассылки на стороне сервиса и рассылка через внешние SMTP-сервера.

Работа с API сервиса осуществляется с помощью отправки команд методом GET по протоколу HTTP на адрес http://api.get-n-post.ru/
SMTP-протокол
Дополнительно можно рассылать по SMTP-протоколу, в smtp host необходимо указать адрес api.get-n-post.ru:1125, в качестве smtp login нужно использовать id-рассылки, в качестве smtp password – api ключ

Возвращаемые ошибки и статусы пакетов
Статусы
Ошибки

Загрузка пакета
Для загрузки пакета используется обращение по адресу /api/v1/add_package
Обязательные параметры запроса
Спец-символы кодируются согласно RFC 2396
Пример

http://api.get-n-post.ru/api/v1/add_package?key=12...

Система анализирует переданные параметры и в случае успеха возвращает ответ в формате XML c идентификатором созданного пакета.
После получения URL система закачивает его на сервер и приступает к обработке.

XML
<?xml version="1.0" encoding="utf-8" ?>
<response>
  <pack_id>60</pack_id>
</response>
В случае неуспеха операции cистема вернет код ошибки

XML
<?xml version="1.0" ?> 
<response>
  <status>EXXX</status>
</response>
Важно!
Наличие ошибки подразумевает, что информация о пакете не была сохранена

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

Для проверки пакета используется POST запрос по адресу /api/v1/check_package

Обязательные параметры запроса
Пример

http://api.get-n-post.ru/api/v1/check_package?key=...

тело пакета передается в параметре package

В ответ сервис выдаст XML со статусом пакета, количеством адресатов или сообщением об ошибке и описанием последней ошибки


XML
<?xml version="1.0" ?>
<response>
  <status>XXXX</status>
  <last_error>Описание ошибки</last_error>
  <user_count>Число корректных адресатов</user_count>
</response>

Контроль статуса пакета
В любой момент после успешного создания пакета пользователь может запросить статус пакета по его идентификатору.

Для получения статуса пакета используется обращение по адресу /api/v1/package_status

Обязательные параметры запроса
Пример

http://api.get-n-post.ru/api/v1/package_status?key...

В ответ сервис выдаст XML со статусом пакета или сообщением об ошибке

XML
<?xml version="1.0" ?>
<response>
  <status>XXXX</status>
</response>

Отчет о недоставке
Для получения отчёта о доставке необходимо сформировать команду /api/v1/package_report

Обязательные параметры запроса
В ответ сервис вернет сообщение об ошибке или ответ со списком адресатов, во время отправки писем которым произошла ошибка
XML
<?xml version="1.0" ?>
<report>
  <item>
    <email><![CDATA[user_email]]></email>
    <code>reject_code</code>
    <message><![CDATA[reject_message]]></message>
</item>
..................................

..................................
</report>

Статистика по выпускам
Пример

http://my.get-n-post.ru/api/v1/get_issue_stat?id=8174978&id=8174982key=you_key

Параметр id можно задавать несколько раз и получать статистику по нескольким выпускам за один вызов.

key - обязательный параметр.

В случае ошибки возвращается:

SQL
{
status: "error",
message: "api key check error"
}
В случае успеха возвращается:

SQL
{
status: "ok",
message: "",
stat: 
[
{
status: "S018",
date: "2016-05-26 12:54:38",
stat: 
{
send_ok: 19046,
send_fail: 0,
stop: 2162,
gen_ok: 19046,
open_msg: 198,
bad: 46,
trap: 10,
click_link: 0,
dup: 0,
total: 21687,
fbl: 423
},
issuen: 8174978
},
{
status: "S018",
date: "2016-05-26 12:54:38",
stat: 
{
send_ok: 1,
send_fail: 0,
stop: 0,
gen_ok: 1,
open_msg: 0,
bad: 0,
trap: 0,
click_link: 0,
dup: 0,
total: 1,
fbl: 0
},
issuen: 8174982
}
]
}

Статистика по выпускам для SMTP
Пример

http://my.get-n-post.ru/api/v1/get_smtp_issue_stat...

или

http://my.get-n-post.ru/api/v1/get_smtp_issue_stat...

key - обязательный параметр

В случае успеха возвращается:

SQL
{
message: "",
stat: [
date: "2018-02-26 12:54:38",
issuen: 8999999,
stat: 
{
bad: 46,
click_link: 0,
dup: 0,
fbl: 423,
gen_ok: 19046,
open_msg: 198,
send_fail: 0,
send_ok: 19046,
stop: 2162,
stop: 0,
total: 21687,
trap: 10,
},
status: "S006"
}
],
status: "ok"
}

Статистика по дням
По текущим отправкам через SMTP:

Пример вызова за текущую дату
http://api.get-n-post.ru/api/v1/get_stop_report?ke...

Запрос статистики за текущий день можно повторять каждые 5-10 минут.
В результате, вы получили статистику с начала дня (00:00) до момента отправки запроса.

Пример вызова за конкретный день
http://api.get-n-post.ru/api/v1/get_stop_report?ke...

По текущим отправкам (FBL - жалобы на спам):

Пример вызова за текущую дату
http://api.get-n-post.ru/api/v1/get_fbl_report?key...

Запрос статистики за текущий день можно повторять каждые 5-10 минут.
В результате, вы получили статистику с начала дня (00:00) до момента отправки запроса.

Пример вызова за конкретный день
http://api.get-n-post.ru/api/v1/get_fbl_report?key...

Так же вы можете в каждый заголовок добавлять X-Track-ID (например, в ссылки для идентификации каждого мейла на вашей стороне).
Статистика по этому ID будет доступна в /api/v1/package_report


FBL отчет
Для получения отчета с FBL (Feedback List) необходимо использовать команду: /api/v1/package_report_fbl

В ответ сервис вернет сообщение об ошибке или ответ со списком адресатов, во время отправки писем которым они нажали кнопку «Спам»

Формат ответа

XML
<?xml version="1.0" ?>
<report>
  <item>
    <email><![CDATA[user_email]]></email>
  </item>
..................................

..................................
</report>

Остановка рассылки
В любой момент после загрузки пакета, имеется возможность остановить процесс обработки и рассылки.

Для остановки пакета необходимо сформировать команду /api/v1/package_stop

Обязательные параметры запроса
Пример вызова
http://api.get-n-post.ru/api/v1/package_stop?key=1...

В ответ сервис вернет сообщение об ошибке или ответ со списком адресатов, во время отправки писем которым произошла ошибка.

Формат ответа

XML
<?xml version="1.0" ?>
<response>
  <status>XXXX</status>
</response>

Формат пакета
XML
<?xml version="1.0" encoding="UTF-8" ?>
<list>
  <body>
    <Data>mail body</Data>
    <EmailFrom>test@email.ru</EmailFrom>
    <NameFrom></NameFrom>
    <Subject>mail subject</Subject>
    <SendAt>2014/09/01 09:00</SendAt>
    <Header name=”MyHeader1” value=”MyVal1 {{emailto}}”/>
    <Header name=”MyHeader2” value=”MyVal2”/>
  </body>
  <users>
    <user>
      <EmailTo></EmailTo>
      <NameTo></NameTo>
      <field1></field1>
      …
      <fieldN></fieldN>
    </user>
    …
  </users>
</list>
Поля секции BODY. Обязательно для заполнения.
Необязательные поля
Поля секции USER. Обязательно для заполнения.
Необязательные поля
Кроме указанных полей в секции USER могут присутствовать дополнительные поля, значения которых можно использовать в тексте письма.
Обращение к ним в тексте письма осуществляется с помощью конструкции <tmpl_var field_name>
Важно!
Данные для всех полей необходимо помещать в конструкцию <![CDATA[ ]]>
Пример пакета
XML
<?xml version="1.0" encoding="UTF-8"?>
<list>
  <body>
    <Data>
      <![CDATA[<pre>
Здравствуй, <tmpl_var name>! Пишет тебе <tmpl_var who>.
Поздравляю тебя с <tmpl_var age>!
</pre>]]>
    </Data>
    <EmailFrom><![CDATA[nobody@example.com]]></EmailFrom>
    <NameFrom><![CDATA[Отправитель]]></NameFrom>
    <Subject><![CDATA[С днем рождения!]]></Subject>
  </body>
  <users>
    <user>
      <EmailTo><![CDATA[test@example.com]]></EmailTo>
      <NameTo><![CDATA[Василий]]></NameTo>
      <name><![CDATA[Вася]]></name>
      <age><![CDATA[11-летием]]></age>
      <who><![CDATA[дедушка Мороз]]></who>
    </user>
    <user>
      <EmailTo><![CDATA[another-test@example.com]]></EmailTo>
      <name><![CDATA[Петр Сергеевич]]></name>
      <age><![CDATA[45-летием]]></age>
      <who><![CDATA[твоя жена Марфа]]></who>
    </user>
  </users>
</list>
Придет два письма

Text
Здравствуй, Вася!
Пишет тебе дедушка Мороз
Поздравляю тебя с 11-летием!
Text
Здравствуй, Петр Сергеевич!
Пишет тебе твоя жена Марфа.
Поздравляю тебя с 45-летием! 

Ссылка на отписку
В шаблонах писем можно разместить ссылку на отписку.
При нажатии на нее в письме, подписчик будет добавлен в стоп лист по домену вашей рассылки и пользователь более не будет получать от вас письма

HTML
<a href="<tmpl_var sys_unsubscribe_url>">Вы можете отписаться от рассылки</a>
{{ sys_unsubscribe_url }} В случае, когда парсер HTML (например в wysiwyg-редакторе), может посчитать такую ссылку невалидной, можно использовать в шаблонах следующую конструкцию:

Python
{{ sys_unsubscribe_url }}

Attach писем через xml API
XML
<?xml version="1.0"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Body>
    <Data>test test test</Data>
    <EmailFrom>test@test.ru</EmailFrom>
    <NameFrom>test@test.ru</NameFrom>
    <Subject>test для аттачей</Subject>
    <Attach name="file1.txt" mimetype="text"><![CDATA[MTIzdGVzdAr0++Lg++A=]]></Attach>
    <Attach name="мой файл.txt" mimetype="text"><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxsaXN0IHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiPgogIDxCb2R5PgogICAgPERhdGE+dGVzdCB0ZXN0IHRlc3Q8L0RhdGE+CiAgICA8RW1haWxGcm9tPnNodmVlbmtvdkBtYWlsLnJ1PC9FbWFpbEZyb20+CiAgICA8TmFtZUZyb20+c2h2ZWVua292QG1haWwucnU8L05hbWVGcm9tPgogICAgPFN1YmplY3Q+dGVzdCDQtNC70Y8g0LDRgtGC0LDRh9C10Lk8L1N1YmplY3Q+CiAgICA8QXR0YWNoIG5hbWU9ImZpbGUxLnR4dCI+PCFbQ0RBVEFbTVRJemRHVnpkQT09XV0+PC9BdHRhY2g+CiAgICA8QXR0YWNoIG5hbWU9ItC80L7QuSDRhNCw0LnQuy50eHQiIG1pbWV0eXBlPSJ0ZXh0Ij48IVtDREFUQVtNVEl6ZEdWemRBPT1dXT48L0F0dGFjaD4KICA8L0JvZHk+CiAgPFVzZXJzPgogICAgPHVzZXI+CiAgICAgIDxFbWFpbFRvPnNodmVlbmtvdkBnbWFpbC5jb208L0VtYWlsVG8+CiAgICAgIDxBdHRhY2ggbmFtZT0i0LXRidC1INGE0LDQudC7LmpwZWciIG1pbWV0eXBlPSJpbWFnZS9wbmciPg==]]></Attach>
  </Body>
  <Users>
    <user>
      <EmailTo>test@test.ru</EmailTo>
      <Attach name="file1.txt" mimetype="image/png"><![CDATA[MTIzdGVzdAr0++Lg++A=]]></Attach>
    </user>
  </Users>
</list>
Attach добавляется либо в Body, либо в user в виде:
XML
<Attach name="file1.txt" mimetype="text"><![CDATA[base64.encode(content)]]></Attach>
Важно!
Контент нужно заэнкодить в base64
Параметр mimetype - необязательный
Параметр name - это имя вложения в письме

Для картинок нужно указать mimetype="image/jpeg", mimetype="image/gif", mimetype="image/png"