- Регистрация
- 21 Авг 2008
- Сообщения
- 368
- Реакции
- 191
- Автор темы
- Заблокирован
- #1
Нарыл интересный велосипедик. Правда не знаю - работает иль нет. В общем он автоматически активирует учётку через мыло. Более подробнее Для просмотра ссылки Войди или Зарегистрируйся.
PHP:
<?php
/*
Несколько удобных функций для работы с активацией писем.
Регаешь акки? Нужны мыла? Собрался продавать учебники и покупать авторег?
Теперь можно обойтись и без этого!
initializeMails($needle)
- функция собирает валидные (в течении 10 минут) емайлы и помещает их в файл-дамп
- как аргумент берет число - количество нужных емайлов
- возвращает идентификатор этого файла (md5-подпись)
loadMails($session)
- подгружает все емайлы по идентификатору в массив
checkLetters($sessions)
- функция возвращает массив, содержащий список писем (дату, тему письма, ссылку) в почтовом ящике
- как аргумент принимает результат функции loadMails()
checkContents($letters)
- функция возвращает массив с содержимым писем
Для более подробного ознакомления - советую использовать print_r() для каждой из функций.
Пример создания новой сессии мейлов (1000 мейлов):
$session = initializeMails(1000); // например вернет 7378e02b8fcb1bf8be6399b195fa4232
Пример получения содержимого ящиков:
$mailbox = checkLetters(loadMails('7378e02b8fcb1bf8be6399b195fa4232'));
Пример получения содержимого писем:
$letters = checkContents(checkLetters(loadMails('7378e02b8fcb1bf8be6399b195fa4232')));
Обычно работает такая схема, что сперва создается сессия (то есть активируется какое-то количество емайлов),
далее идет работа Вашего скрипта, используя полученные емайлы (например регистрация чего-либо).
После этих действий следует активировать паузу в 5 минут, дабы дождаться дохода писем на наши ящики.
После этого можно проверять ящики, по созданной сессии, получая их содержимое (и, например, активируя зарегистрированные аккаунты по ссылкам).
2Q11
*/
function ex($string, $from, $to)
{
$string = explode($from, $string, 2);
$string = explode($to, $string[1], 2);
return $string[0];
}
function initializeMails($needle)
{
// default header
$head = array(
'Host: 10minutemail.net',
'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12',
'Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5',
'Accept-Language: en-us,en;q=0.5',
'Accept-Encoding: gzip,deflate',
'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7',
'Keep-Alive: 300',
'Connection: keep-alive'
);
// vars initializing
$curl_multi = curl_multi_init();
$threads = array();
$results = array();
// adding connections
$i = 0;
for ($i = 0; $i < $needle; $i++)
{
$threads[$i] = curl_init();
curl_setopt($threads[$i], CURLOPT_URL, 'http://10minutemail.net/en/');
curl_setopt($threads[$i], CURLOPT_ENCODING, 'gzip,deflate');
curl_setopt($threads[$i], CURLOPT_HTTPHEADER, $head);
curl_setopt($threads[$i], CURLOPT_HEADER, 1);
curl_setopt($threads[$i], CURLOPT_RETURNTRANSFER, 1);
curl_multi_add_handle($curl_multi, $threads[$i]);
}
// executing connections
$done = null; do{curl_multi_exec($curl_multi, $done);}while($done > 0);
// parsing sessions and emails
$i = 0; $write_string = '';
for ($i = 0; $i < $needle; $i++)
{
$outer = curl_multi_getcontent($threads[$i]);
$phpsess = ex($outer, 'PHPSESSID=', ';');
$email = ex($outer, '<input type="text" id="fe_text" class="mailtext" value="', '"');
$write_string .= $phpsess.";".$email."\r\n";
$results[] = array($phpsess, $email);
}
// logging
$session = md5(implode('salt', $results[0]));
$write = fopen('./emails/'.$session.'.txt','a+');
fputs($write, $write_string);
fclose($write);
// closing connections and returning array [ PHPSESSID, EMAIL ]
curl_multi_close($curl_multi);
return $session;
}
function loadMails($session)
{
$emails = file('./emails/'.$session.'.txt');
$parsed = array();
foreach ($emails as $email)
{
if (trim($email) != '')
{
$email = explode(';', $email);
$parsed[] = array(
'session' => $email[0],
'email' => $email[1]
);
}
}
return $parsed;
}
function checkLetters($sessions)
{
$curl_multi = curl_multi_init();
$threads = array();
$results = array();
$i = 0;
for ($i = 0; $i < count($sessions); $i++)
{
$current_header = array(
'Host: 10minutemail.net',
'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12',
'Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5',
'Accept-Language: en-us,en;q=0.5',
'Accept-Encoding: gzip,deflate',
'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7',
'Keep-Alive: 300',
'Connection: keep-alive',
'Cookie: PHPSESSID='.$sessions[0]['session'].'; '
);
$threads[$i] = curl_init();
curl_setopt($threads[$i], CURLOPT_URL, 'http://10minutemail.net/en/mailbox_sql.ajax.php');
curl_setopt($threads[$i], CURLOPT_ENCODING, 'gzip,deflate');
curl_setopt($threads[$i], CURLOPT_HTTPHEADER, $current_header);
curl_setopt($threads[$i], CURLOPT_POST, 1);
curl_setopt($threads[$i], CURLOPT_POSTFIELDS, 'xjxfun=GetMail&xjxr=1234567891234');
curl_setopt($threads[$i], CURLOPT_RETURNTRANSFER, 1);
curl_multi_add_handle($curl_multi, $threads[$i]);
}
$done = null; do{curl_multi_exec($curl_multi, $done);}while($done > 0);
$i = 0;
for ($i = 0; $i < count($sessions); $i++)
{
$email_list = curl_multi_getcontent($threads[$i]);
$email_list = ex($email_list, '<table id="maillist">', '</table>');
$letters = explode('<tr>', $email_list); $letters_parsed = array();
foreach ($letters as $k => $letter)
{
if ($k >= 2)
{
$letter = explode('</tr>', $letter);
$letter = $letter[0];
$data = explode('<td>', $letter); $letter_parsed = array();
foreach ($data as $j => $data_part)
{
if ($j != 0)
{
$data_part = explode('</td>', $data_part);
$data_part = html_entity_decode($data_part[0]);
$letter_parsed[] = $data_part;
}
}
$subject = strip_tags($letter_parsed[1]);
$message = ex($letter_parsed[1], 'readmail.html?mid=', '\'');
$letters_parsed[] = array(
'id' => $message,
'email' => $sessions[$i]['email'],
'session' => $sessions[$i]['session'],
'from' => $letter_parsed[0],
'subject' => $subject,
'date' => $letter_parsed[2]
);
}
}
$results = array_merge($results, $letters_parsed);
}
curl_multi_close($curl_multi);
return $results;
}
function checkContents($letters)
{
$curl_multi = curl_multi_init();
$threads = array();
$results = array();
$i = 0;
for ($i = 0; $i < count($letters); $i++)
{
$current_header = array(
'Host: 10minutemail.net',
'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12',
'Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5',
'Accept-Language: en-us,en;q=0.5',
'Accept-Encoding: gzip,deflate',
'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7',
'Keep-Alive: 300',
'Connection: keep-alive',
'Cookie: PHPSESSID='.$letters[$i]['session'].'; '
);
$threads[$i] = curl_init();
curl_setopt($threads[$i], CURLOPT_URL, 'http://10minutemail.net/en/readmail.html?mid=' . $letters[$i]['id']);
curl_setopt($threads[$i], CURLOPT_ENCODING, 'gzip,deflate');
curl_setopt($threads[$i], CURLOPT_HTTPHEADER, $current_header);
curl_setopt($threads[$i], CURLOPT_RETURNTRANSFER, 1);
curl_multi_add_handle($curl_multi, $threads[$i]);
}
$done = null; do{curl_multi_exec($curl_multi, $done);}while($done > 0);
$i = 0;
for ($i = 0; $i < count($letters); $i++)
{
$message = curl_multi_getcontent($threads[$i]);
$header = ex($message, '<table id="message">', '</table>');
list($from, $to, $subject, $date) = explode('</tr><tr>', $header);
$from = explode('</td><td>', $from);
$from = explode('</td>', $from[1]);
$from = html_entity_decode($from[0]);
$to = explode('</td><td>', $to);
$to = explode('</td>', $to[1]);
$to = html_entity_decode($to[0]);
$subject = explode('</td><td>', $subject);
$subject = explode('</td>', $subject[1]);
$subject = html_entity_decode($subject[0]);
$date = explode('</td><td>', $date);
$date = explode('</td>', $date[1]);
$date = html_entity_decode($date[0]);
$message = explode('<h2>Message</h2><div>', $message);
$message = explode('</div>', $message[1]);
$message = $message[0];
$all = array(
'from' => $from,
'to' => $to,
'subject' => $subject,
'date' => $date,
'message' => $message
);
$results[$letters[$i]['id']] = $all;
}
curl_multi_close($curl_multi);
return $results;
}
?>