E-mail маркетинг, сервис рассылки e-mail и SMS
(495) 540-4265 (800) 555-6696

Метод sendEmail

Метод для отправки одного или нескольких индивидуальных email-сообщений без использования персонализации и с ограниченными возможностями получения статистики. Не рекомендуется использовать его при массовых рассылках незначительно отличающихся сообщений. Разумный сценарий использования – персональное уведомление клиента о каком-то индивидуальном событии (например, изменение статуса заказа в интернет-магазине). Для массовых рассылок похожих по содержанию писем предназначена комбинация методов createEmailMessage / createCampaign.

Если вам всё же надо отправить много писем через sendEmail, то для уменьшения нагрузки на сервер и увеличения пропускной способности рекомендуем отправлять по несколько писем за один вызов метода, а не по одному письму за раз. Мы рекомендуем отправлять до 100 писем за вызов (но если размер письма превышает 200 килобайт, то лучше ограничиться меньшим количеством). Верхняя граница – 200 писем за вызов.

Сообщения, отправляемые через sendEmail, не подтвергаются цензуре человеком, поэтому по умолчанию количество разрешаемых к отправке писем через этот метод в сутки ограничено 200, а максимальный размер письма ограничен 1 мегабайтом. Чтобы увеличить лимиты, обращайтесь в администрацию. И в любом случае, даже при увеличении лимитов email-адрес получателя должен находиться в ваших списках, и быть активным и доступным.

Поскольку сообщения и так могут быть сделаны максимально индивидуальными, подстановка полей в них не осуществляется, за исключением значения {{UnsubscribeUrl}}.

Вы можете узнать статус доставки отправленного сообщения с помощью метода checkEmail. Для ускорения работы метода sendEmail статусы доставки хранятся ограниченное время – только неделю.

Принцип использования

Синтаксис и URL для вызова метода
sendEmail (mixed email, mixed sender_name, mixed sender_email, mixed subject, mixed body, int list_id [, mixed attachments, mixed lang, mixed track_read, mixed track_links, bool attach_multi])
Пример с одним email-адресом:

http://api.unisender.com/ru/api/sendEmail?format=json&api_key=KEY &email=EMAILTO&sender_name=FROMNAME &sender_email=FROMMAIL&subject=SUBJECT &body=HTMLBODY&list_id=X&attachments[filename1]=FILE1&attachments[filename2]=FILE2&lang=LANG&track_read=X&track_links=Y
Пример с несколькими email-адресами:

http://api.unisender.com/ru/api/sendEmail?format=json&api_key=KEY &email[0]=EMAIL_A&email[1]=EMAIL_B&sender_name=FROMNAME &sender_email=FROMMAIL&subject=SUBJECT&body=HTMLBODY &body[0]=HTMLBODY_A&body[1]=HTMLBODY_B &list_id=X&attachments[0][filenameA1.txt]=FILE_A1&attachments[0][filenameA2.jpg]=FILE_A2&attachments[1][filenameB1.png]=FILE_B1&lang=LANG&track_read=X&track_links=Y&attach_multi=1
Аргументы
api_key * Ключ доступа к API
email * Адрес получателя сообщения. Можно указывать несколько адресов получателя, тогда применяется синтаксис массива.
sender_name * Имя отправителя. Произвольная строка, не совпадающая с e-mail адресом (с аргументом sender_email). Может быть массивом, количество элементов которого должно совпадать с количеством элементов массива email. Если email-массив, а sender_name одинаковый для всех email, рекомендуем передавать sender_name строкой, а не массивом.
sender_email * E-mail адрес отправителя. Этот e-mail должен быть проверен (для этого надо создать вручную хотя бы одно письмо с этим обратным адресом через веб-интерфейс, затем нажать на ссылку «отправьте запрос подтверждения» и перейти по ссылке из письма).

Реселлеры могут верифицировать адрес отправителя с помощью API-метода validateSender.

sender_email может быть массивом, количество элементов которого должно совпадать с количеством элементов массива email. Если адресатов много, а sender_email одинаковый для всех – лучше передать его строкой.
subject * Строка с темой письма, либо массив таких строк, количество элементов которого должно совпадать с количеством элементов массива email. Если адресатов много, а subject одинаковый, нет смысла передавать его массивом.
body * Текст письма в формате HTML. Пользовательские поля подстановки практически не поддерживаются для ускорения обработки (предполагается, что письмо и так составлено индивидуально для получателя) – гарантируется только наличие {{UnsubscribeUrl}}.

Текст может включать и относительные ссылки на изображения, хранящиеся в папке пользователя на нашем сервере – такие изображения будут включены в само письмо. Ссылки на изображения на сервере должны иметь вид: "/ru/user_file?resource=images&name=IMAGE", где вместо IMAGE должно быть имя файла из вашей папки на сервере, например image.jpg или folder/image.jpg.

Если же изображение не хранится на нашем сервере, то вы можете вставить картинку, передав её как файл-вложение (см. описание аргумента attachments).

body может быть массивом, количество элементов которого должно совпадать с количеством элементов массива email. Если адресатов много, а body одинаковый для всех - лучше передать его строкой, а не передавать массив одинаковых элементов.
list_id * Код списка, от которого будет предложено отписаться адресату в случае, если он перейдёт по ссылке отписки. Коды всех списков можно получить с помощью вызова getLists. Адресат должен находиться в этом списке – предположительно, отправка идёт отдельным адресатам этого списка.
attachments Вложенные в письмо файлы. В случае, когда адресат один или набор вложенных файлов одинаковый для всех адресатов, то attachments - ассоциативный массив файлов-вложений. В качестве ключа указывается имя файла, в качестве значения - содержимое файла, например:

attachments[quotes.txt]=text%20file%content


Если адресатов несколько и набор вложенных файлов для них разный, то надо передать дополнительный аргумент attach_multi=1, а attachments должен представлять из себя массив, каждый из элементов которого - ассоциативный массив файлов-вложений, например:

attachments[0][a.txt]=some%20text
&attachments[1][a.txt]=other%20text&attach_multi=1

В сообщение вложения будут добавлены в том же порядке, в котором перечислены. Можно вставлять в текст письма inline-картинки, добавляя их как файлы-вложения и ссылаясь на них в HTML так: <img src="3_name.jpg">. Вместо числа три надо подставить порядковый номер вложения (нумерация начинается с единицы для каждого адресата), а вместо name.jpg - имя вложения.

Предполагается, что HTML-текст содержит только содержимое тега body. Если вы передаёте текст HTML целиком, то тестируйте такие письма дополнительно – заголовки вне body могут быть подвергнуты модификациям. Кроме того, чтобы уменьшить расхождение в отображении в различных почтовых программах, мы автоматически добавляем дополнительную разметку в каждое письмо (таблица с невидимыми границами, которая также задаёт шрифт по умолчанию и выравнивание текста по левой границе). Вы можете попросить отключить это для ваших писем, обратившись в техподдержку.
lang Двухбуквенный код языка для автоматически добавляемой в каждое письмо строки со ссылкой отписки.

Если не указан, то используется код языка из URL-обращения к API.

Кроме собственно строки со ссылкой отписки, этот язык также влияет на интерфейс страницы отписки. Полностью поддерживаются языки ru, it и en, для нескольких других языков (da, de, es, fr, nl, pl, pt, tr) будет переведена строка со ссылкой, а интерфейс управления будет на английском.
track_read Принимаемое значение – 0 или 1 – отслеживать ли факт прочтения e-mail сообщения. По умолчанию 0 (не отслеживать). Если 1, то в e-mail будет добавлена ссылка на небольшую картинку, отслеживающую обращение.

Если адресатов несколько, а параметры отслеживания прочтений для них разные, можно передать track_read как массив значений, количество которых должно совпадать с количеством элементов массива email.
track_links Принимаемое значение – 0 или 1 – отслеживать ли переходы по ссылкам в e-mail сообщениях, по умолчанию 0 (не отслеживать). Если 1, то все внешние ссылки будут заменяться на специальные, позволяющие отследить факт перехода, а затем переправить пользователя на нужную страницу.

Если адресатов несколько, а параметры отслеживания переходов по ссылкам для них разные, можно передать track_links как массив значений, количество которых должно совпадать с количеством элементов массива email.
attach_multi Принимаемое значение – 0 или 1. Если 1, то массив attachments двумерный, т.е. для каждого адресата используется свой набор файлов-вложений. См. описание аргумента attachments.
Возвращаемое значение
Если передавалось одно сообщение и не использовался синтаксис массива для email, то возвращаемое значение является JSON-объектом с одним полем:
email_id Уникальный код сообщения – строка до 64 символов. Может использоваться для контроля доставки методом checkEmail.
Если использовался синтаксис массива для email, то возвращаемое значение является JSON-массивом объектов со следующими полями:
email email-адрес, на который было отправлено сообщение.
id Уникальный код сообщения – строка до 64 символов. Может использоваться для контроля доставки методом checkEmail.
error Строка с условным обозначением ошибки, одна из: not_imported(email отсутствует в списке), not_active(адрес не является активным и доступным) blocked (отправка на этот адрес заблокирована). В будущем возможно появление и других ошибок. Если поле error отсутствует - значит, ошибок не было.

Смотрите также

Пример формирования URL-запроса

http://api.unisender.com/ru/api/sendEmail?format=json&api_key=KEY
&email=test@example.com&sender_name=Mike&sender_email=mike@example.com
&subject=Sample+Subject&body=Hello,+World!&list_id=112233


— отправить сообщение Hello, World на адрес test@example.org с указанием обратного адрес Mike

Примеры на PHP

Мы настоятельно рекомендуем использовать POST-запросы, так как это более безопасный метод передачи данных, нежели GET. Подробнее о методах соединения здесь.

Пример с использованием POST-запроса
// Ваш ключ доступа к API (из Личного Кабинета)
$api_key = "xxxxxxxxxxxxxxxxxx";

// Параметры сообщения
// Если скрипт в кодировке UTF-8, не используйте iconv
$email_from_name = "UniSender";
$email_from_email = "text@example.org";
$email_to = "user@example.org";
$email_body = urlencode(iconv('cp1251', 'utf-8',"Email-сообщение по-русски"));
$list_id = "234442";

// Создаём POST-запрос
$POST = array (
  'api_key' => $api_key,
  'email' => $email,
  'sender_name' => $email_from_name,
  'sender_email' => $email_from_email,
  'body' => $email_body,
  'list_id' => $list_id
);

// Устанавливаем соединение
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $POST);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_URL, 
            'http://api.unisender.com/ru/api/sendEmail?format=json');
$result = curl_exec($ch);

if ($result) {
  // Раскодируем ответ API-сервера
  $jsonObj = json_decode($result);

  if(null===$jsonObj) {
    // Ошибка в полученном ответе
    echo "Invalid JSON";

  }
  elseif(!empty($jsonObj->error)) {
    // Ошибка отправки сообщения
    echo "An error occured: " . $jsonObj->error . "(code: " . $jsonObj->code . ")";

  } else {
    // Сообщение успешно отправлено
    echo "Email message is sent. Message id " . $jsonObj->result->email_id;

  }
} else {
  // Ошибка соединения с API-сервером
  echo "API access error";
}