Подтвердить что ты не робот

Лучший способ обрабатывать парсинг/декодирование электронной почты в PHP?

В настоящее время я использую библиотеку PEAR mimeDecode.php для анализа входящих писем. Кажется, у вас много проблем и не удается декодировать много сообщений, поэтому я хотел бы заменить его чем-то лучшим.

Я ищу что-то, что может правильно отделить части сообщения, например, от, от тела и т.д. В идеале он сможет обрабатывать все распространенные методы кодирования, такие как base64, uuencode, quoted printable, и др.

В ситуациях, когда одно текстовое и html-версии одного и того же сообщения содержатся в одном электронном письме, я бы идеально хотел, чтобы он знал разницу между ними, поэтому я мог выбрать, какую часть я хотел бы отображать.

Я не беспокоюсь о вложениях на данный момент времени, но было бы неплохо, если бы они знали о них в случае, если я захочу реализовать это в будущем.

Я видел, что у PHP есть группа функций, начинающихся со слова imap, которые появляются, они могут делать то, что я хотел бы, но я не уверен, не пытаясь их выполнить.

В настоящее время я делаю "на лету" декодирование сообщений на PHP, поэтому я ищу решение для замены PHP.

Есть ли у кого-нибудь опыт с этим, который мог бы указать мне в правильном направлении? Мне бы очень хотелось начать использовать что-то, что в конечном итоге не будет делать то, что мне нужно в долгосрочной перспективе.

4b9b3361

Ответ 1

Забавно, что вы должны спросить... Im фактически работает над простой системой уведомлений. Я только что закончил Bounce Manager, используя Zend_Mail для реализации. Он имеет почти все функции, которые вы ищете... вы можете подключиться к почтовому ящику (POP3, IMAP, Mbox и Maildir) и вытаскивать сообщения из него, а также работать со всеми этими сообщениями.

Он обрабатывает многостраничные сообщения, но с деталями может быть сложно работать. Мне было трудно понять, какая часть была прикрепленной оригинальной частью сообщения в NDR, с которой я работал, но у меня есть чувство, что я просто что-то пропустил в документации. Я не уверен, как он обрабатывает кодировку, потому что мое использование было довольно простым, но я уверен, что у него есть положения для всех упомянутых вами кодировок. Ознакомьтесь с документами и просмотрите API.

Ответ 2

Недавно я разработал парсер PHP, и я его использовал для производства.
Я очень доволен этим, и некоторые разработчики разветкили его:

https://github.com/plancake/official-library-php-email-parser

Ответ 3

Теперь я знаю этот вопрос четыре года... но мне пришлось использовать библиотеку разбора почты и не удовлетворены ни одним из доступных вариантов. Я хотел что-то надежное, совместимое с PSR-2, устанавливаемое через композитор.

composer require zbateson/mail-mime-parser

Он использует потоки, которые позволяют передавать ему SMTP-соединение (для разбора электронной почты и хранения в базе данных, например), или файл, или поток памяти... независимо от того, что вам нравится. Он также не хранит всю информацию в памяти - я еще не тестировал этот бит с достаточно большим набором данных, но в теории письма с очень большими вложениями не будут использовать всю память PHP.

https://github.com/zbateson/MailMimeParser

Ознакомьтесь с wiki для руководства и API... и если вы найдете ошибки/опечатки или улучшения, пожалуйста, внесите свой вклад:)

Ответ 4

Я искал php-mime-mail-parser, чтобы исправить все проблемы: Вилка php-mime-mail-parser

Более 52 тестов и 764 утверждений Покрытие кода: 100% строк, 100% функций и методов, 100% классов и черт

Вам нужен пакет PECL MailParse для его использования, но оболочка без проблем и полностью протестирована.

Ответ 5

Для полноты здесь я попытаюсь. http://code.google.com/p/php-mime-mail-parser/ - это оболочка вокруг PHP MailParse, которая должна быть установлена.

Ответ 6

В настоящее время я также ищу удобную, надежную библиотеку разбора электронной почты MIME и в настоящее время серьезно смотрю на Mail компонент из компонентов eZ. Но, если вы ищете что-то, что сделает его таким же простым, как echo $email->text; или echo $email->html;, как и я, вы будете разочарованы. На самом деле, теперь я не думаю, что такое упрощение даже возможно, из-за того, как работает MIME. Но это действительно лучший вариант в мире PHP.

Я начал работать над своим текущим проектом с компонентом Zend_Mail, но когда пришло время действительно копаться внутри этих частей электронной почты и закодированных заголовков, Zend_Mail в значительной степени оставляет вас на холоде. Вам нужно сделать большинство расшифровки самостоятельно, что совсем не забавно.

Что касается IMAP Расширение PHP, оно предназначено для обработки сообщений из вашего почтового ящика, а не для MIME-декодирования. Хотя, у него действительно есть удобная функция декодирования, которая вам может понадобиться. Mailparse Расширение PECL, с другой стороны, касается именно этой проблемы. Я еще не пробовал, но кажется, что вам нужно написать много кода, чтобы действительно получить нужные данные.