Страница 1 из 1

как проверить почтовый ящик и выкачать почту?

Добавлено: 2012.02.13, 14:43
ODware
Нужно проверить почтовый ящик на удаленном почтовом сервере и получить оттуда письма с аттачами.
Нет ли готового экстеншена для этого ? Курил документацию swiftmailer-а, похоже что эта либа только для отправки :(

Re: как проверить почтовый ящик и выкачать почту?

Добавлено: 2012.02.13, 18:59
esche
http://ru.php.net/manual/en/ref.imap.php
http://ru.php.net/manual/en/intro.imap.php (в комментарии для pop3 расписано)

Код: Выделить всё

$mbx = imap_open(); // параметры
$message_count = imap_num_msg($mbox); 

for ($i=1; $i<=$message_count; $i++) { // пошли по письмам
    $header = imap_header($mbox, $i); 
    $body = imap_body($mbox, $i,FT_PEEK);
 // ...
}

Re: как проверить почтовый ящик и выкачать почту?

Добавлено: 2012.02.13, 19:08
ODware
Так-то оно понятно.. я думал мож какой секретный экстенш есть для yii :))))

Re: как проверить почтовый ящик и выкачать почту?

Добавлено: 2012.02.13, 20:10
Caveman
ODware писал(а):Так-то оно понятно.. я думал мож какой секретный экстенш есть для yii :))))
Для внутренних нужд сделал нечто подобное. Особо не заморачивался, поэтому, возможно, надо допиливать под себя
в конфиге:

Код: Выделить всё

'emailReader' => array(
            'class' => 'EmailReader',
            'server' => '',
            'user' => '',
            'password' => '',
            'autoopen' => true,
            
            'onSelect' => function($event){
                $event->sender->messageBody = base64_decode($event->sender->messageBody);
                $subject = explode('?', $event->sender->headerInfo->subject);
                if(isset($subject[3]))
                    $event->sender->subject = base64_decode($subject[3]);
            }
        ), 
onSelect - выполняется при чтении письма, чтобы как-то подготовить его (например, определить кодировку и т.п.)