Лучший способ справиться с анализом / декодированием электронной почты в PHP? - PullRequest
24 голосов
/ 18 января 2011

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

Я ищу что-то, что способно правильно разделить части сообщения, такие как тело, тело и т. Д. В идеале он мог бы обрабатывать все распространенные методы кодирования, такие как base64, uuencode, цитируемый для печати и т.д.

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

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

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

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

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

Ответы [ 6 ]

12 голосов
/ 16 июня 2011

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

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

7 голосов
/ 27 ноября 2015

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

composer require zbateson/mail-mime-parser

Это собственный анализатор, созданный с нуля, чтобы обойти известные проблемы и ошибки в других реализациях. Это всесторонне проверено и довольно широко используется.

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

https://github.com/zbateson/mail-mime-parser

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

5 голосов
/ 18 января 2011

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

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

4 голосов
/ 22 июня 2014

Я разбудил php-mime-mail-parser для устранения всех проблем: Форк php-mime-mail-parser

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

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

2 голосов
/ 04 октября 2012

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

1 голос
/ 29 января 2011

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

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

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

...