(044) 360 9769 (098) 686 0101

Метод createEmailMessage

Метод для создания e-mail сообщения без отправки. Непосредственно отправка осуществляется с помощью другого метода — createCampaign.

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

Синтаксис и URL для вызова метода
createEmailMessage (string sender_name, string sender_email, string subject, string body, int list_id [, string tag, string array attachments, string lang, int series_day, time series_time])
http://api.unisender.com/ru/api/createEmailMessage?format=json&api_key=KEY&sender_name=FROMNAME &sender_email=FROMMAIL&subject=SUBJECT&body=HTMLBODY &list_id=X&tag=TAG&attachements=FILESARRAY&lang=LANG&series_day=DAY&series_time=TIME
Аргументы
api_key * Ключ доступа к API
sender_name * Имя отправителя. Произвольная строка, не совпадающая с e-mail адресом (аргумент sender_email).
sender_email * E-mail адрес отправителя. Этот e-mail должен быть проверен (для этого надо создать вручную хотя бы одно письмо с этим обратным адресом через веб-интерфейс, затем нажать на ссылку «отправьте запрос подтверждения» и перейти по ссылке из письма).

Реселлеры могут верифицировать адрес отправителя с помощью API-метода validateSender.
subject * Строка с темой письма. Может включать поля подстановки.
body * Текст письма в формате HTML с возможностью добавлять поля подстановки.

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

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

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

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

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

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

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

Если этот аргумент отсутствует – письмо не считается автоматическим.

Если задан, то это должно быть целое положительное число, задающее день отправки письма по отношению к дню подписки. У дня номер 1 специальный смысл: если указан этот день, то письмо будет отправлено в момент подписки, и значение series_time будет проигнорировано (т.к. заранее неизвестно время подписки).

Внимание: автоматическая рассылка начинает действовать сразу после успешного создания письма, и если через минуту надо будет отправлять его автоматически – система отправит его.
series_time Время отправки для автоматически рассылаемого письма в формате «ЧЧ:ММ». Если этот аргумент отсутствует, то время будет выбрано произвольно в промежутке от 6:00 до 14:00. Время игнорируется, если не задан аргумент «series_day».

Используется часовой пояс, заданный в настройках Личного кабинета.
Возвращаемое значение
JSON-объект с одним полем message_id, в котором содержится уникальный код сообщения – целое положительное 31-битное число. Используется для отправки сообщения методом createCampaign.

Пример возвращаемого значения:

{"result":{"message_id":357088}}

{"error":"unchecked sender email","code":"invalid_arg","result":""}
      

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

Примеры на PHP

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

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

// Параметры создаваемого email-сообщения
// Если скрипт в кодировке UTF-8, удалите вызовы iconv
$email_from_name = iconv('cp1251', 'utf-8', "Пал Палыч");
$email_from_email = "pal.palych@yandex.ru";
$email_subject = iconv('cp1251', 'utf-8', "Тема нового e-mail сообщения");
$email_to = "354168";  // код списка, по которому делать рассылку
$email_text = urlencode(iconv('cp1251', 'utf-8', "<p>Привет, {{Name}}, ".
              "<font color='red' size='+2'>вот</font> <b>".
              "наша</b> рассылка</p>"));

// Прикрепим простой текстовый файл:
$email_attach_file_name = iconv('cp1251', 'utf-8', "текстовый файл.txt");
$email_attach_file_content = iconv('cp1251', 'utf-8', "Содержимое файла");

// Создаём POST-запрос
$POST = array (
  'api_key' => $api_key,
  'sender_name' => $email_from_name,
  'sender_email' => $email_from_email,
  'subject' => $email_subject,
  'list_id' => $email_to,
  'body' => $email_text,
  'attachments[' . $email_attach_file_name . ']' => $email_attach_file_content
);

// Устанавливаем соединение
$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/createEmailMessage?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 "Success. Message ID is " . $jsonObj->result->message_id;

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


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

// Параметры создаваемого email-сообщения
// Если скрипт в кодировке UTF-8, удалите вызовы iconv
$email_from_name = urlencode(iconv('cp1251', 'utf-8', "Пал Палыч"));
$email_from_email = urlencode("pal.palych@yandex.ru");
$email_subject = urlencode(iconv('cp1251', 'utf-8', "Тема нового e-mail сообщения"));
$email_to = "354168";   // код списка, по которому делать рассылку
$email_text = urlencode(iconv('cp1251', 'utf-8', "<p>Привет, {{Name}}, ".
              "<font color='red' size='+2'>вот</font> <b>".
              "наша</b> рассылка</p>"));

// Прикрепим простой текстовый файл:
$email_attach_file_name = urlencode(iconv('cp1251', 'utf-8', "текстовый файл.txt"));
$email_attach_file_content = urlencode(iconv('cp1251', 'utf-8', "Содержимое файла"));

// Создаём GET-запрос
$api_url = "http://api.unisender.com/ru/api/createEmailMessage?format=json".
           "&api_key=$api_key&sender_name=$email_from_name".
           "&sender_email=$email_from_email".
           "&subject=$email_subject&list_id=$email_to&body=$email_text".
           "&attachments[$email_attach_file_name]=$email_attach_file_content";

// Делаем запрос на API-сервер
$result = file_get_contents($api_url);

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 "Success. Message ID is " . $jsonObj->result->message_id;
  }

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