Анализ входящей почты?

seva2

Партнер PHPClub.ru
Анализ входящей почты?

Такой вопрос, стоит задача анализа входящей почты, и если письмо удовлетворяет определенным критерияем, то удалить его

Какоq готовый клас оптимален для этого?
 

seva2

Партнер PHPClub.ru
наше решение от pear, вопрос:
Subject: =?koi8-r?b?9dfFxM/NzMXOycUgzyDOz9fPzSDP1NfF1MUgzsEg08/Pwt3FzsnFICfhzsHMydog18jPxNHdxcog0M/e1Nk/Jw==?=

Как к читаемому виду привести?
 

WP

^_^
"Уведомление о новом ответе на сообщение 'Анализ входящей почты?"

-~{}~ 20.08.06 18:29:

p.s. накатать скрипт в 5 строк или сам?
 

seva2

Партнер PHPClub.ru
накатать.... не могу найти функций декодирования.....

Тема верна)
 

WP

^_^
в общем я сейчас хочу отвлечься от работы немного), пишу:
PHP:
$headers = 'Subject: =?koi8-r?Q?=f5=d7=c5=c4=cf=cd=cc=c5=ce=c9=c5=20=cf=20=ce=cf=d7=cf=cd=20=cf=d4'.
'=d7=c5=d4=c5=20=ce=c1=20=d3=cf=cf=c2=dd=c5=ce=c9=c5=20=5c=e1=ce=c1=cc=c9=da=20=d7='.
'c8=cf=c4=d1=dd=c5=ca=20=d0=cf=de=d4=d9=3f=5c?=
header2: text
';
class mail_headers
{
 var $text = '';
 var $preparsed = array();
 var $fields = array();
 function mail_headers() {}
 function loadText($text) {$this->text = strval($text);}
 function preparse()
 {
  preg_match_all('~^(.*?):\s*(.*)\r?\n?~m',$this->text,$matches,PREG_SET_ORDER);
  foreach ($matches as $m) {$this->preparsed[$m[1]] = $m[2];}
  return TRUE;
 }
 function parse_fields()
 {
  foreach ($this->preparsed as $f=>$v)
  {
   if (preg_match('~^Subject$~i',$f))
   {
    if (preg_match('~=\?(.*)\?=~',$v,$m))
    {
     $e = explode('?',$m[1]);
     if (isset($e[1]))
     {
      if (strtolower($e[1]) == 'b') {$e[1] = base64_decode($e[2]); unset($e[2]);}
      elseif (strtolower($e[1]) == 'q') {$e[1] = urldecode(str_replace('=','%',$e[2])); unset($e[2]);}
      $v = iconv($e[0],'windows-1251',$e[1]);
     }
    }
   }
   $this->fields[$f] = $v;
  }
 }
}
$mail_headers = new mail_headers();
$mail_headers->loadText($headers);
$mail_headers->preparse();
$mail_headers->parse_fields();
var_dump($mail_headers->fields);
/*
array(2) {
  ["Subject"]=>
  string(64) "Уведомление о новом ответе на сообщение \Анализ входящей почты?\"
  ["header2"]=>
  string(5) "text
"
}

*/
 

SiMM

Новичок
WP, а где же обработка q? Да и b регистронезависима.

-~{}~ 20.08.06 22:07:

Subject: =?koi8-r?Q?=f5=d7=c5=c4=cf=cd=cc=c5=ce=c9=c5=20=cf=20=ce=cf=d7=cf=cd=20=cf=d4=d7=c5=d4=c5=20=ce=c1=20=d3=cf=cf=c2=dd=c5=ce=c9=c5=20=5c=e1=ce=c1=cc=c9=da=20=d7=c8=cf=c4=d1=dd=c5=ca=20=d0=cf=de=d4=d9=3f=5c?=
 

WP

^_^
ыыыы) дык чукча не четатель, чукча песатель как выясняется)
 

Develar

Новичок
Хорошо хоть до чукчи дошло, что есть 3 функции в PHP для написанного велосипеда :)
 

WP

^_^
Дык в PHP 5, а щяс везде почти 4 =) Так что не велосипед, а мопед )
И потом задача была отвлечься от работы, а не написать что-то архи-полезное и актуальное :D
 

seva2

Партнер PHPClub.ru
ОК, спасиб, и еще вопрос,
есть - $pop3->getParsedHeaders($i) массив

Как получить значение с ключем Subject
 
Сверху