Гость
Покинул форум
Сообщений всего: 70
Дата рег-ции: Февр. 2013
Откуда: UA Donbass
Помог: 0 раз(а)
|
Привет. Задача такая: каждые 10 сек. нужно проверять последние поступившие емайлы через IMAP (POP3), если есть новые записюльки - вбивать их содержание в БД, а затем удалять эти прочитанные (загруженные) письма из ящика.
Имеется у меня вот такой код. Он вроде как работает, но очень-очень коряво. И надо его конечно, допилять, правда без помощи со стороны я не справлюсь…
PHP:
скопировать код в буфер обмена
<? mysql_connect('localhost', 'proba', '000') or die('Connect to mysql server failed'); $host="{pop.i.ua:995/pop/ssl}"; $login = 'user@i.ua'; $password = 'trololo'; $msg=new mread($host, $login, $password); class mread { public function __get($name){ if ($name=='mail') return $this->unread; else return null; } public function mread($host, $login, $pwd) { $folder="INBOX"; if ($arr !== false) { foreach ($arr as $i){ $this->getmsg($i); $messages = $this->htmlmsg; // mysql_query("SET names UTF8"); mysql_query('INSERT INTO `emails` (`messages`, `when`) VALUES ("'.$messages.'", UNIX_TIMESTAMP())'); } $this->unread=$messages; } } private function getmsg($mid) { // $this->htmlmsg = $this->plainmsg = $this->charset = ''; // Если нам нужно отобразить только одно последнее сообщение, а не все if (!$s->parts) $this->getpart($mid,$s,0); else { foreach ($s->parts as $partno0=>$p) $this->getpart($mid,$p,$partno0+1); } } private function getpart($mid,$p,$partno) { if ($p->encoding==4) if ($p->dparameters) foreach ($p->dparameters as $x) $params[ strtolower( $x->attribute ) ] = $x->value; elseif ($p->type==0 && $data) { $this->plainmsg .= trim($data); else $this->htmlmsg .= $data; $this->charset = $params['charset']; } elseif ($p->type==2 && $data) { $this->plainmsg .= trim($data); } } } ?>
На данный момент этот php кодик выводит мне на страницу последние полученные-непрочитанные писма в таком формате:
CODE ( html):
скопировать код в буфер обмена
string(523) "<html> <head> <style><!-- .hmmessage P { margin:0px; padding:0px } body.hmmessage { font-size: 12pt; font-family:Calibri } --></style></head> <body class='hmmessage'><div dir='ltr'>НвЮ бЮФХаЦРЭШХ ЯХаТЮУЮ ЯШбмЬР<br> </div></body> </html><html> <head> <style><!-- .hmmessage P { margin:0px; padding:0px } body.hmmessage { font-size: 12pt; font-family:Calibri } --></style></head> <body class='hmmessage'><div dir='ltr'>БЮФХаЦРЭШХ ТвЮаЮЩ ЧРЯШбоЫмЪШ<br> </div></body> </html>"
А надо в таком:
Это содержание первого письма
Содержание второй записюльки
Т.е., без string(523) и двойных кавычек, в нормальной кодировке и без html трибухи. То что он не выводит остальные пункты письма (от кого, тему) – это так надо, мне эти пункты и не нужны, нужно только содержание письма. Пытаюсь добавить сообщения в бузу, фигня получается. Эти два сообщения добавляются, вот только они оба одинаковые добавляются, а должны быть разные. Короче, в мою БД, в одну и во вторую строку добавляется это:
CODE ( html):
скопировать код в буфер обмена
<html> <head> <style><!-- .hmmessage P { margin:0px; padding:0px } body.hmmessage { font-size: 12pt; font-family:Calibri } --></style></head> <body class='hmmessage'><div dir='ltr'>НвЮ бЮФХаЦРЭШХ ЯХаТЮУЮ ЯШбмЬР<br> </div></body>
Если сказать по правде, то этот код для меня сплошная загадка. От куда он стили берёт? Так же, я не знаю как удалить прочитанные (загруженные) письма из ящика и настроить автозагрузку в интервал 10сек.
Помогите мне кто-нибудь, пожалуйста. [
ПС. Я не знаю, может кто подкинет более адекватный код (скрипт), который нормально работает без пиляния? Буду очень благодарен!
|