6. Отправка Email через API

Метод предназначен для отправки письма через API, когда функционал Кампаний рассылки через UI Сервиса по какой-то причине не подходит. Данные передаются в формате application/json.

HTTP запрос
  • URL: https://sender-solutions.com/api/emails/send-instant-email/
  • HTTP Метод: POST
  • Content-Type: application/json
Тело запроса (JSON)
{
    "SendEmail": {
        "TrackingSettings": {
            "TrackLinks": true,
            "TrackPlainTextLinks": true,
            "TrackOpen": true,
            "TrackUnsubscribe": true
        },
        "EmailSettings": {
            "InlineImages": true,
            "SendAt": 1769356236,
            "UseDkim": true,
            "UseDkimSelector": null
        },
        "Email": {
            "To": [
                {
                    "Email": "cat@example.com",
                    "Name": "Mr Cat"
                }
            ],
            "Cc": [],
            "Bcc": [],
            "ReplyTo": [],
            "From": {
                "Email": "info@example.org",
                "Name": "MyCompany Title"
            },
            "Headers": [
                {
                    "Name": "X-Request-Id",
                    "Value": "X-abc-123"
                }
            ],
            "Html": "<!doctype html>\r            <html lang=\"en\">\r            <head>\r                <meta charset=\"UTF-8\">\r                <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\r                <title>Test Email<\/title>\r            <\/head>\r            <body>\r            <h1>Hello<\/h1>\r            <p>Test email content<\/p>\r            <\/body>\r            <\/html>",
            "PlainText": "Hello\r\nIt's test email content",
            "Subject": "Test Email via API",
            "Attachments": [
                {
                    "ContentBase64": "VGVzdCBGaWxlIGNvbnRlbnQ=",
                    "ContentId": "ec91464b58363fac4924587afecf53d0",
                    "Disposition": "attachment",
                    "Filename": "Attachment12.txt",
                    "Type": "text/plain"
                }
            ]
        }
    }
}
Пример запроса с использованием cURL

curl --location 'https://sender-solutions.com/api/emails/send-instant-email/' \
--header 'Content-Type: application/json' \
--header 'Authorization: {{api-token}}' \
--data-raw '{
    "SendEmail": {
        "TrackingSettings": {
            "TrackLinks": true,
            "TrackPlainTextLinks": true,
            "TrackOpen": true,
            "TrackUnsubscribe": true
        },
        "EmailSettings": {
            "InlineImages": true,
            "SendAt": 1769356236,
            "UseDkim": true,
            "UseDkimSelector": null
        },
        "Email": {
            "To": [
                {
                    "Email": "cat@example.com",
                    "Name": "Mr Cat"
                }
            ],
            "Cc": [],
            "Bcc": [],
            "ReplyTo": [],
            "From": {
                "Email": "info@example.org",
                "Name": "MyCompany Title"
            },
            "Headers": [
                {
                    "Name": "X-Request-Id",
                    "Value": "X-abc-123"
                }
            ],
            "Html": "<!doctype html>\r            <html lang=\"en\">\r            <head>\r                <meta charset=\"UTF-8\">\r                <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\r                <title>Test Email<\/title>\r            <\/head>\r            <body>\r            <h1>Hello<\/h1>\r            <p>Test email content<\/p>\r            <\/body>\r            <\/html>",
            "PlainText": "Hello\r\nIt'\''s test email content",
            "Subject": "Test Email via API",
            "Attachments": [
                {
                    "ContentBase64": "VGVzdCBGaWxlIGNvbnRlbnQ=",
                    "ContentId": "ec91464b58363fac4924587afecf53d0",
                    "Disposition": "attachment",
                    "Filename": "Attachment12.txt",
                    "Type": "text/plain"
                }
            ]
        }
    }
}'
Описание полей

Если в полях SendEmail.TrackingSettings.* или SendEmail.EmailSettings.* отправить значение null (или не отправить поле вообще), то система самостоятельно примет решение, как обрабатывать письмо. Рекомендуется всегда указывать все важные для вас поля настроек, чтобы поведение системы было предсказуемым

Поле Тип Обязательное Описание
SendEmail.TrackingSettings.TrackLinks boolean | null Настройка отвечает за отслеживание переходов по ссылкам. Если включена, ссылки в html части письма будут изменены, чтобы включить отслеживание переходов.
SendEmail.TrackingSettings.TrackPlainTextLinks boolean | null Настройка отвечает за отслеживание переходов по ссылкам. Если включена, ссылки в plain/text части письма будут изменены, чтобы включить отслеживание переходов.
SendEmail.TrackingSettings.TrackOpen boolean | null Настройка отвечает за отслеживание открытия письма
SendEmail.TrackingSettings.TrackUnsubscribe boolean | null Настройка отвечает за отслеживание отписок от рассылки
SendEmail.EmailSettings.InlineImages boolean | null При включённой опции html часть письма будет оптимизирована: внешние изображения будут добавлены как inline вложения (их нельзя скачать). Внешне письмо не изменится, но у почтовых клиентов будет больше доверия к такому письму
SendEmail.EmailSettings.SendAt int | null Минимальная дата отправки письма (unix timestamp). Используется для отложенной отправки
SendEmail.EmailSettings.UseDkim boolean | null Нужно ли использовать DKIM подпись. Система самостоятельно найдёт подходящий под это письмо DKIM ключ
SendEmail.EmailSettings.UseDkimSelector string | null Значение селектора (selector) DKIM ключа, который необходимо использовать для подписи. Указание непустого значения для этого свойства приводит к тому, что система считает свойство SendEmail.EmailSettings.UseDkim также включённым, даже если оно передано как false Если подходящего ключа под это письмо с указанным селектором не найдено, то система попробует найти и использовать другой подходящий под это письмо DKIM ключ
SendEmail.Email.To array Массив объектов с ключами Email и Name. Каждый объект этого массива отвечает за отдельного получателя письма. Как минимум один получатель обязателен.
SendEmail.Email.Cc
SendEmail.Email.Bcc
SendEmail.Email.ReplyTo
array Массив объектов с ключами Email и Name. Каждый объект этого массива отвечает за отдельный email адрес и добавляет адрес в соответствующий заголовок письма (в Cc, Bcc, ReplyTo)
SendEmail.Email.To.*.Email string Email адрес получателя. Поле обязательно для каждого конкретного объекта в SendEmail.Email.To.*
SendEmail.Email.To.*.Name string Имя получателя. Поле желательно указывать, если у вас есть это значение
SendEmail.Email.Cc.*.Email
SendEmail.Email.Bcc.*.Email
SendEmail.Email.ReplyTo.*.Email
string Email адрес. Это обязательное поле для каждого переданного элемента массивов Cc, Bcc, ReplyTo. Но сами эти элементы в массивах не обязательны. То есть вы можете не передавать адрес целиком, но если передаёте, то Email обязательно нужно указать
SendEmail.Email.Cc.*.Name
SendEmail.Email.Bcc.*.Name
SendEmail.Email.ReplyTo.*.Name
string Имя получателя. Поле желательно указывать, если у вас есть это значение
SendEmail.Email.From.Email string Email адрес отправителя. На основе него будет определён домен, от имени которого отправка. Данный домен должен быть добавлен в проект в Личном Кабинете, права на него должны быть подтверждены.
SendEmail.Email.From.Name string Имя отправителя. Рекомендуется указывать это поле, чтобы вашим подписчикам было проще понять от кого пришло письмо
SendEmail.Email.Headers array Массив объектов, каждый из которых содержит строковые свойства Name и Value. Эти заголовки будут добавлены в письмо. Некоторые заголовки являются защищёнными, и их не получится добавить / переопределить через API запрос. Передавайте только действительно нужные вам нестандартные заголовки
SendEmail.Email.Html string HTML код письма. Может быть пустым или отсутствовать, если передано поле SendEmail.Email.PlainText передано
SendEmail.Email.PlainText string Текстовая версия письма. Может быть пустым или отсутствовать, если передано поле SendEmail.Email.Html передано
SendEmail.Email.Subject string Тема письма
SendEmail.Email.Attachments array Массив объектов, каждый из которых отвечает за вложение. Вложения не обязательны. Но если переданы, то требуются все поля, кроме ContentId - он требуется только для вложений с Disposition = inline.
SendEmail.Email.Attachments.*.ContentBase64 string Контент (содержимое) вложения в base64
SendEmail.Email.Attachments.*.ContentId string ContentId (идентификатор) вложения, должен быть уникальным в рамках одного письма. Требуется для вложений с Disposition = inline
SendEmail.Email.Attachments.*.Disposition string Отвечает за тип вложения. Возможные значения: attachment - вложение, которое можно скачать, и inline - вложение для использования внутри письма
SendEmail.Email.Attachments.*.Filename string Имя вложения
SendEmail.Email.Attachments.*.Type string Mime тип вложения, например, application/pdf
Пример успешного ответа
{
    "success": true,
    "SendEmail": {
        "SendMessageRequestId": 49,
        "MessageId": "1vb1rzxzem2naah3dxp3t9k6zoj9d4hc@sender-solutions.com"
    }
}

В теле ответа поле SendEmail.SendMessageRequestId отвечает за уникальный номер задачи на отправку одного письма. А поле SendEmail.MessageId отвечает за уникальное значение для заголовка Message-ID в письме.
Эти данные могут пригодиться для выполнения других запросов к нашему API или для обращений к технической поддержке.