2015-05-08 1 views
0

После получения SMTP/MIME-текста трудно сказать, насколько сложным может быть синтаксический анализ/обработка писем, поступающих со всех видов случайных программ SMTP/MIME.Как получить вложения XML/TXT из разных источников электронной почты в PHP?

Для конкретной позы этого вопроса получение информации заголовка совершенно не имеет значения. Требуются только приложения.

¿Есть ли там пуленепробиваемое решение?

Спасибо

ответ

1

Вам потребуется MIME-анализатор для обработки данных MIME. В PHP расширение Mailparse может сделать это за вас. Это довольно простая библиотека, поэтому обертка, такая как php-mime-mail-parser, может значительно упростить ситуацию. В любом случае, если предположить, Mailparse, основной контур процесса заключается в следующем: нагрузка/разобрать электронную почту, а затем enumate все части и подразделы, где выполняются следующие условия:

  • Content-Disposition заголовок для части является attachment ,
  • Декодированный параметр filename заголовка Content-Dispositon заканчивается буквами .xml или .txt. В качестве альтернативы вы можете положиться на заголовок Content-Type для определения типа (text/XML и text/plain, соответственно), но это будет менее надежным, поскольку он зависит от отправителя электронной почты, который определяет правильный тип MIME для прикрепленного документа.

После нахождения частей вложений они могут быть декодированы из представления MIME с использованием предоставленных PHP функций для BASE64 или декодирования с кавычками.

+0

Может ли Mailparse быть установленным внешним? У меня WHM, и я предпочитаю не вмешиваться в это, так как это не во встроенных параметрах WHM, а просто класть библиотеку в папку. – mikl

+1

@mikl: Я не знаком с WHM, но из того, что я собираю, PHP Extension Manager поставляется вместе с ним. '/ scripts/phpextensionmgr' с параметром' install' должен помочь установить расширение (опять же, просто подсказку). – PeterK

+1

Ops, просто сделал это. Пошел в Software/Module Installers/PHP Pecl, а остальное довольно интуитивно. – mikl