С примером фрагментов кода было бы приятней видеть ответы)
Спустя 4 минуты, 59 секунд (10.06.2011 - 09:07) Invis1ble написал(а):
наверное, схема примерно такая: cURL -> получаем контент -> парсим контент 
А код, я думаю, слишком специфичен и зависит от множества различных факторов, чтобы выкладывать какие-то фрагменты.

А код, я думаю, слишком специфичен и зависит от множества различных факторов, чтобы выкладывать какие-то фрагменты.
Спустя 8 минут, 18 секунд (10.06.2011 - 09:15) kirik написал(а):
Скорее для этой задачи подойдут сокеты. Коннектимся к mail-сереру (pop3 или imap) => запрашиваем письма => делаем что нужно.
UPD
Когда-то довольно давно класс для работы с pop3 писал, но.. Т.к. он стал не нужен, я не дописывал его и не тестил особо. Плюс к этому комментов нет.
Базовый функционал есть.
Также советую почитать как вообще работает pop3.
UPD
Когда-то довольно давно класс для работы с pop3 писал, но.. Т.к. он стал не нужен, я не дописывал его и не тестил особо. Плюс к этому комментов нет.
Базовый функционал есть.
Свернутый текст
Class popMail
{
private $thread;
private $total_msgs;
private $msgs_list;
private $msg_headers;
public function login($address, $port, $login, $password)
{
$this->thread = fsockopen($address, $port, $errno, $errstr);
if(!$this->thread)
exit('fsockopen() failed: '.$errstr);
$this->getAnswer();
$this->sendRequest('USER '.$login);
$this->getAnswer();
$this->sendRequest('PASS '.$password);
$this->getAnswer();
}
public function getAnswer($top=false)
{
$read = fgets($this->thread);
if($top)
{
$line = $read;
while(!mb_ereg("^\.\r\n", $line))
{
$line = fgets($this->thread);
$read .= $line;
}
}
if($read[0] != '+')
{
if(empty($read))
exit('Unknown error');
else
exit('POP3 failed: '.$read);
}
return $read;
}
public function sendRequest($msg)
{
fwrite($this->thread, $msg."\r\n");
}
public function getInfo()
{
$this->sendRequest('STAT');
preg_match('/(\d+)\s+(\d+)/s', $this->getAnswer(), $out);
$this->total_msgs = $out[1];
return array('total_messages' => $out[1], 'total_size' => $out[2]);
}
public function getMessagesList()
{
if(empty($this->total_msgs))
$this->getInfo();
if($this->total_msgs > 0)
{
for($i = 1; $i <= $this->total_msgs; $i++)
{
$this->sendRequest('LIST '.$i);
preg_match('/(\d+)\s+(\d+)/s', $this->getAnswer(), $out);
$this->msgs_list[$out[1]] = array('msg_id' => $out[1], 'msg_size' => $out[0]);
}
}
else
{
return false;
}
return $this->msgs_list;
}
public function getMessage($id)
{
$this->sendRequest('TOP '.$id.' 0');
$this->msg_headers = trim(strstr($this->getAnswer(true), "\r\n"), "\r\n.");
$this->sendRequest('RETR '.$id);
$msg_body = trim(strstr(str_replace($this->msg_headers, null, $this->getAnswer(true)), "\r\n"), "\r\n.");
return array('headers' => $this->msg_headers, 'body' => $msg_body);
}
public function deleteMessage($id)
{
$this->sendRequest('DELE '.$id);
$this->getAnswer();
}
public function resetMarks()
{
$this->sendRequest('RSET');
$this->getAnswer();
}
public function getHeader($name)
{
if(empty($this->msg_headers))
return false;
preg_match('/'.preg_quote($name, '/').':\s+(.+)/i', $this->msg_headers, $out);
return $out[1];
}
function __destruct()
{
$this->sendRequest('QUIT');
$this->getAnswer();
}
}
Также советую почитать как вообще работает pop3.
_____________