Обзор

Интеграции

Руководство пользователя

Справочник API

Вебхуки

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

Этот API-эндпоинт предназначен для отправки писем через сервер Haskimail. Для пакетной отправки (ссылку нужно будет добавить) предусмотрена отдельная конечная точка, которая позволяет отправлять до 500 сообщений (до 50 МБ, включая вложения) за один вызов.

Отправка одного письма #

post

/email

Заголовки запроса

Content-Type обязательный

application/json

Accept обязательный

application/json

X-Haskimail-Server-Token обязательный

Для этого запроса необходимы права на уровне сервера. Этот токен можно найти на вкладке «Токены API» в настройках вашего сервера Haskimail.

Пример запроса с curl

curl "https://api.haskimail.ru/email" \
-X POST \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Haskimail-Server-Token: server token" \
-d '{
	"From": "отправитель@example.com",
	"To": "получатель@example.com",
	"Subject": "Haskimail тест",
	"TextBody": "Привет, дорогой клиент Haskimail.",
	"HtmlBody": "<html><body><strong>Привет</strong> дорогой клиент Haskimail. </body></html>"
}'

Параметры тела запроса

From string обязательный

Адрес электронной почты отправителя. Необходимо наличие зарегистрированной и подтвержденной Подписи отправителя. Чтобы указать имя, используйте формат "Имя Фамилия <отправитель@домен.com>". Знаки препинания в имени необходимо экранировать.

To string обязательный

Адрес электронной почты получателя. Несколько адресов разделяются запятой. Не более 50.

Cc string

Получатель копии (Cc). Несколько адресов разделяются запятой. Не более 50.

Bcc string

Получатель скрытой копии (Bcc). Несколько адресов разделяются запятой. Не более 50.

Subject string

Тема письма

Tag string

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

HtmlBody string обязательный

Если не указан TextBody задает тело письма в формате HTML.

TextBody string обязательный

Если не указан HtmlBody задает тело письма в виде простого текста.

ReplyTo string

Адрес для ответа. Позволяет переопределить адрес, указанный по умолчанию в Подписи отправителя. Несколько адресов разделяются запятой.

Headers array

Список пользовательских заголовков для добавления в письмо.

TrackOpens boolean

Активировать отслеживание открытий для этого письма.

TrackLinks boolean

Активировать отслеживание ссылок для этого письма.

Metadata object

Пользовательские метаданные в формате пар «ключ-значение».

Attachments array

Список вложений.

MessageStream integer

Идентификатор (ID) Канала, используемого для отправки. Если не указан, по умолчанию будет использован транзакционный канал "outbound".

Пример тела запроса

{
	"From": "отправитель@example.com",
	"To": "получатель@example.com",
	"Cc": "copied@example.com",
	"Bcc": "blind-copied@example.com",
	"Subject": "Test",
	"Tag": "Invitation",
	"HtmlBody": "<b>Hello</b> <img src=\"cid:image.jpg\"/>",
	"TextBody": "Hello",
	"ReplyTo": "reply@example.com",
	"Headers": [
		{
			"Name": "CUSTOM-HEADER",
			"Value": "value"
		}
	],
	"TrackOpens": true,
	"TrackLinks": true,
	"Attachments": [
		{
			"Name": "readme.txt",
			"Content": "dGVzdCBjb250ZW50",
			"ContentType": "text/plain"
		},
		{
			"Name": "report.pdf",
			"Content": "dGVzdCBjb250ZW50",
			"ContentType": "application/octet-stream"
		},
		{
			"Name": "image.jpg",
			"ContentID": "cid:image.jpg",
			"Content": "dGVzdCBjb250ZW50",
			"ContentType": "image/jpeg"
		}
	],
	"Metadata": {
		"color":"blue",
		"client-id":"12345"
	},
	"MessageStream": "1"
}

Ответ

To string

Email-адрес получателя

SubmittedAt string

Временная метка

MessageID string

Идентификатор сообщения

ErrorCode integer

Коды ошибок API

Message string

Текст ответа

Пример ответа

HTTP/1.1 200 OK
Content-Type: application/json

{
	"To": "получатель@example.com",
	"SubmittedAt": "2014-02-17T07:25:01.4178645-05:00",
	"MessageID": "0a129aee-e1cd-480d-b08d-4f48548ff48d",
	"ErrorCode": 0,
	"Message": "OK"
}

Пакетная отправка писем #

post

/email/batch

Заголовки запроса

Content-Type обязательный

application/json

Accept обязательный

application/json

X-Haskimail-Server-Token обязательный

Для этого запроса необходимы права на уровне сервера. Этот токен можно найти на вкладке «Токены API» в настройках вашего сервера Haskimail.

Пример запроса с curl

curl "https://api.haskimail.ru/email/batch" \
-X POST \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Haskimail-Server-Token: server token" \
-d '[
	{
		"From": "отправитель@example.com",
		"To": "receiver1@example.com",
		"Subject": "Haskimail тест #1",
		"TextBody": "Привет, дорогой клиент Haskimail.",
		"HtmlBody": "<html><body><strong>Привет</strong> дорогой клиент Haskimail. </body></html>"
	},
	{
		"From": "отправитель@example.com",
		"To": "receiver2@example.com",
		"Subject": "Haskimail тест #2",
		"TextBody": "Привет, дорогой клиент Haskimail.",
		"HtmlBody": "<html><body><strong>Привет</strong> дорогой клиент Haskimail. </body></html>"
	}
]'

Параметры тела запроса

From string обязательный

Адрес электронной почты отправителя. Должен иметь зарегистрированную и подтвержденную Подпись отправителя. Чтобы указать имя, используйте формат "Имя Фамилия <otpravitel@domain.com>". Знаки препинания в имени должны быть экранированы.

To string обязательный

Адрес электронной почты получателя. Несколько адресов указываются через запятую. Максимум 50.

Cc string

Адрес электронной почты получателя копии (Cc). Несколько адресов указываются через запятую. Максимум 50.

Bcc string

Адрес электронной почты получателя скрытой копии (Bcc). Несколько адресов указываются через запятую. Максимум 50.

Subject string

Тема письма.

Tag string

Тег для категоризации исходящих писем и сбора подробной статистики. Максимальная длина 1000 символов.

HtmlBody string

HTML-содержимое письма. Используется, если не указан TextBody.

TextBody string

Текстовое содержимое письма. Используется, если не указан HtmlBody

ReplyTo string

Адрес для ответа, переопределяющий стандартный. По умолчанию используется адрес, указанный в подписи отправителя.

Headers array

Список пользовательских заголовков для добавления в письмо.

TrackOpens boolean

Активировать отслеживание открытий для этого письма.

TrackLinks boolean

Активировать отслеживание переходов по ссылкам для этого письма.

Metadata object

Пользовательские метаданные в формате пар «ключ-значение».

Attachments array

Список вложений.

MessageStream integer

ID Канала, который используется для отправки. Если не указан, по умолчанию используется транзакционный канал «outbound».

Пример тела запроса

[
	{
		"From": "отправитель@example.com",
		"To": "receiver1@example.com",
		"Cc": "copied@example.com",
		"Bcc": "blank-copied@example.com",
		"Subject": "Test",
		"Tag": "Invitation",
		"HtmlBody": "<b>Hello</b> <img src=\"cid:image.jpg\"/>",
		"TextBody": "Hello",
		"ReplyTo": "reply@example.com",
		"Headers": [
			{
				"Name": "CUSTOM-HEADER",
				"Value": "value"
			}
		],
		"TrackOpens": true,
		"TrackLinks": true,
		"Attachments": [
			{
				"Name": "readme.txt",
				"Content": "dGVzdCBjb250ZW50",
				"ContentType": "text/plain"
			},
			{
				"Name": "report.pdf",
				"Content": "dGVzdCBjb250ZW50",
				"ContentType": "application/octet-stream"
			},
			{
				"Name": "image.jpg",
				"ContentID": "cid:image.jpg",
				"Content": "dGVzdCBjb250ZW50",
				"ContentType": "image/jpeg"
			}
			],
			"Metadata": {
				"color":"green",
				"client-id":"12345"
			},
			"MessageStream": "1"
		},
		{
		"From": "отправитель@example.com",
		"To": "receiver2@example.com",
		"Cc": "copied@example.com",
		"Bcc": "blank-copied@example.com",
		"Subject": "Test",
		"Tag": "Invitation",
		"HtmlBody": "<b>Hello</b> <img src=\"cid:image.jpg\"/>",
		"TextBody": "Hello",
		"ReplyTo": "reply@example.com",
		"Headers": [
			{
				"Name": "CUSTOM-HEADER",
				"Value": "value"
			}
		],
		"TrackOpens": true,
		"TrackLinks": true,
		"Attachments": [
			{
				"Name": "readme.txt",
				"Content": "dGVzdCBjb250ZW50",
				"ContentType": "text/plain"
			},
			{
				"Name": "report.pdf",
				"Content": "dGVzdCBjb250ZW50",
				"ContentType": "application/octet-stream"
			},
			{
				"Name": "image.jpg",
				"ContentID": "cid:image.jpg",
				"Content": "dGVzdCBjb250ZW50",
				"ContentType": "image/jpeg"
			}
		],
		"Metadata": {
			"color":"blue",
			"client-id":"54321"
		},
		"MessageStream": "1"
	}
]

Ответ

Обратите внимание, что конечная точка /batch всегда возвращает HTTP-статус 200, даже если при валидации отдельных сообщений возникли ошибки. Пользователям этого эндпоинта следует проверять код успеха и ошибки для каждого сообщения в ответе от нашего API (ответы в массиве расположены в том же порядке, что и отправленные сообщения).

To string

Адрес электронной почты получателя.

SubmittedAt string

Временная метка отправки.

MessageID string

ID сообщения.

ErrorCode integer

Коды ошибок API

Message string

Сообщение ответа

Пример ответа

HTTP/1.1 200 OK
Content-Type: application/json

[
	{
		"ErrorCode": 0,
		"Message": "OK",
		"MessageID": "b7bc2f4a-e38e-4336-af7d-e6c392c2f817",
		"SubmittedAt": "2010-11-26T12:01:05.1794748-05:00",
		"To": "receiver1@example.com"
	},
	{
		"ErrorCode": 406,
		"Message": "Вы попытались отправить письмо получателю, который был помечен как неактивный. Найдены неактивные адреса: example@example.com. К неактивным относятся получатели, по которым произошел постоянный возврат (hard bounce), поступила жалоба на спам или которые были заблокированы вручную."
	}
]