whoami7 - Manager
:
/
home
/
kckglobal
/
cloud.kckglobal.net
/
bkp
/
application
/
vendor
/
willdurand
/
email-reply-parser
/
Upload File:
files >> /home/kckglobal/cloud.kckglobal.net/bkp/application/vendor/willdurand/email-reply-parser/README.md
# EmailReplyParser [](https://github.com/willdurand/EmailReplyParser/actions?query=workflow%3A%22ci%22+branch%3Amaster) [](https://packagist.org/packages/willdurand/email-reply-parser) [](https://packagist.org/packages/willdurand/email-reply-parser) **EmailReplyParser** is a PHP library for parsing plain text email content, based on GitHub's [email_reply_parser](http://github.com/github/email_reply_parser) library written in Ruby. ## Installation The recommended way to install EmailReplyParser is through [Composer](http://getcomposer.org/): ```shell composer require willdurand/email-reply-parser ``` ## Usage Instantiate an `EmailParser` object and parse your email: ```php <?php use EmailReplyParser\Parser\EmailParser; $email = (new EmailParser())->parse($emailContent); ``` You get an `Email` object that contains a set of `Fragment` objects. The `Email` class exposes two methods: - `getFragments()`: returns all fragments; - `getVisibleText()`: returns a string which represents the content considered as "visible". The `Fragment` represents a part of the full email content, and has the following API: ```php <?php $fragment = current($email->getFragments()); $fragment->getContent(); $fragment->isSignature(); $fragment->isQuoted(); $fragment->isHidden(); $fragment->isEmpty(); ``` Alternatively, you can rely on the `EmailReplyParser` to either parse an email or get its visible content in a single line of code: ```php $email = \EmailReplyParser\EmailReplyParser::read($emailContent); $visibleText = \EmailReplyParser\EmailReplyParser::parseReply($emailContent); ``` ## Known Issues ### Quoted Headers Quoted headers aren't picked up if there's an extra line break: On <date>, <author> wrote: > blah Also, they're not picked up if the email client breaks it up into multiple lines. GMail breaks up any lines over 80 characters for you. On <date>, <author> wrote: > blah The above `On ....wrote:` can be cleaned up with the following regex: ```php $fragment_without_date_author = preg_replace( '/\nOn(.*?)wrote:(.*?)$/si', "", $fragment->getContent() ); ``` Note though that we're search for "on" and "wrote". Therefore, it won't work with other languages. Possible solution: Remove "reply@reply.github.com" lines... ### Weird Signatures Lines starting with `-` or `_` sometimes mark the beginning of signatures: Hello -- Rick Not everyone follows this convention: Hello Mr Rick Olson Galactic President Superstar Mc Awesomeville GitHub **********************DISCLAIMER*********************************** * Note: blah blah blah * **********************DISCLAIMER*********************************** ### Strange Quoting Apparently, prefixing lines with `>` isn't universal either: Hello -- Rick ________________________________________ From: Bob [reply@reply.github.com] Sent: Monday, March 14, 2011 6:16 PM To: Rick ## Unit Tests Setup the test suite using Composer: $ composer install Run it using PHPUnit: $ ./vendor/bin/simple-phpunit ## Contributing See CONTRIBUTING file. ## Credits - GitHub - William Durand ## License EmailReplyParser is released under the MIT License. See the bundled LICENSE file for details.
Copyright ©2021 || Defacer Indonesia