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

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
ODware
Сообщения: 5
Зарегистрирован: 2011.03.01, 14:15

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

Сообщение ODware » 2012.02.13, 14:43

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

esche
Сообщения: 1054
Зарегистрирован: 2010.11.24, 03:39

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

Сообщение esche » 2012.02.13, 18:59

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);
 // ...
}
...

ODware
Сообщения: 5
Зарегистрирован: 2011.03.01, 14:15

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

Сообщение ODware » 2012.02.13, 19:08

Так-то оно понятно.. я думал мож какой секретный экстенш есть для yii :))))

Аватара пользователя
Caveman
Сообщения: 152
Зарегистрирован: 2009.04.04, 20:56
Откуда: Москва
Контактная информация:

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

Сообщение Caveman » 2012.02.13, 20:10

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 - выполняется при чтении письма, чтобы как-то подготовить его (например, определить кодировку и т.п.)
Вложения
EmailReader.rar
(998 байт) 126 скачиваний

Ответить