Я извлекаю письма из базы данных, где они хранятся в виде строк. Мне нужно разобрать эти письма, чтобы извлечь их вложения. Я предполагаю, что для этого достаточно библиотеки, но я не могу ее найти.
PEAR :: Mail :: mimeDecode должен делать то, что вы ищете
PHP имеет расширение MailParse, которое намного быстрее, чем использование альтернативы PEAR, которая является родным PHP.
Вот библиотека, которая обертывает это расширение:
http://code.google.com/p/php-mime-mail-parser/
Пример:
// require mime parser library require_once('MimeMailParser.class.php'); // instantiate the mime parser $Parser = new MimeMailParser(); // set the email text for parsing $Parser->setText($text); // get attachments $attachments = $Parser->getAttachments();
Это можно сделать, используя компонент Zend_Mail в Zend Framework
Возможно, этот пример, который также можно найти в документации, помогает:
// get the first none multipart part $part = $message; while ($part->isMultipart()) { $part = $message->getPart(1); } echo 'Type of this part is ' . strtok($part->contentType, ';') . "\n"; echo "Content:\n"; echo $part->getContent();
Однако я не знаю, как вы можете сказать Zend Mail читать строки, возможно, для этого требуется какая-то работа, но тогда у вас будет полнофункциональная библиотека, которая сделает то, что вы хотите, и еще несколько (например, чтение темы , и т.д.).
Изменить :
Я просто второй раз посмотрел на него и понял, что все, что вам нужно сделать, это написать собственную реализацию хранилища (подкласс Zend_Mail_Storage_Abstract), который не так сложно сделать.
Я думаю, это самое чистое решение, которое вы получите, хотя для его работы требуется небольшое усилие.
Если вы ищете более быстрое «грязное» решение, кто-то может помочь вам.
Надеюсь, это поможет.
PhpMimeParser – разбор мультиплеерного сообщения mime (вложения, встроенные изображения, base64, кавычки) https://github.com/breakermind/PhpMimeParser Вы можете вырезать mime-сообщения из файлов, строки.
// Load .eml mime message from file $str = file_get_contents('mime-mixed-related-alternative.eml'); // Format output echo "<pre>"; // Create object MimeParser $m = new PhpMimeParser($str); // Show Emails print_r($m->mTo); print_r($m->mFrom); print_r($m->mBcc); print_r($m->mCc); // Show Message echo $m->mSubject; echo $m->mHtml; echo $m->mText; print_r($m->mInlineList); // Show Files print_r($m->mFiles);
Вложения электронной почты кодируются MIME и добавляются в тело сообщения с использованием заголовков. Пакет декодирования PEAR MIME сделает все, что вам нужно: http://pear.php.net/package/Mail_mimeDecode