Метод 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
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-адрес, на который было отправлено сообщение. | |
| 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. Подробнее о методах соединения здесь.
// Ваш ключ доступа к 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";
}



