принципы работы с imap или библиотеки для работы с imap

profan

Новичок
принципы работы с imap или библиотеки для работы с imap

Задача через imap читать письма, сохранять данные о письме в бд, если письмо в html формате, сохранять картинки и прочее и менять пути к ним в теле письма, сохранять вложения, после обработки письма на сервере перемещать его в другу папку (больше возможных требований пока не вижу)

Решений пока вижу два:

1. Использовать функции пхп. Проблема в том что imap_fetchstructure возвращает структуру зависщую от структуры письма (те есть письмо в формате хтмл и имеет картинки то будет соответствующая вложенная структура описывающая эти данные, если письмо еще имеет вложения то будет еще одна вложенная структура для вложений). На сколько я понял, обрабатывать эту структуру нужно рекурсивно и в зависимости от значений этой структуры получать само тело письма, получать картинки если письмо в html, получаь вложения. Правила я определил следующие: если есть значение ifid = true - это объект из тела письма (если письмо в формате html), если type = 0 && ifid = false - это само тело письма, если присутвует атрибут attachment - это вложение. Эти выводы я сделал методом проб, но уверен что что-то неучел. Есть конечно описание протокола, и возможно если его прочесть полностью то станет понятно как с ним работать, но при беглом просмотре я понял что там вопрос рассматривается с другой позиции и ничего полезно не вынес для себя.

Вобщем признателен буду за ссылки на нормальное описание (не отдельно для каких то задач, например получение атачментов) а вобщее, или за советы из собстенного опыта, например какие значения что означают и какой алгоритм лучше применить для работы со структурой.

2. Использовать библиотеку. Наиболее подходящее (из немного найденного) это pear модуль mail_imapv2. Но кроме документации из пхп дока я по нем ничего ненашел. Все ссылки из поиска по его документации ведут на http://www.smilingsouls.net/mail_imap, который неработает.
 

dimagolov

Новичок
profan, я делал через imap_. единственный скользкий момент был именно с рекурсивным обходом структуры и определения номеров частей письма, которые нужны для их запроса через imap_fetchbody. Решение есть в каментах в мане.

п.с. так как номера сообщений могут меняться в ящике, то я брал md5($headerinfo->message_id) или (если id отсутствует) md5 от конкатенации udate/subject предварительно очищенных от всех пробельных символов. очищать нужно было, так как я не только через imap с письмами работаю, чтобы не было разночтений.
 

profan

Новичок
вот нашел пример, может кому пригодиться. Только там насколько я понял файлы вложений от файлов из html структуры не отделяются, попробую переделать...
http://forum.dklab.ru/viewtopic.php?p=176877
 
Сверху