Description
The recommended way to install EmailReplyParser is through Composer:
Email Reply Parser alternatives and similar libraries
Based on the "Email" category.
Alternatively, view Email Reply Parser alternatives based on common mentions on social networks and blogs.
-
CssToInlineStyles
CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very usefull when you're sending emails. -
phpList
This module is the core of phpList 4. Join discussion at the community forum: https://discuss.phplist.org/ -
Bounce Mail Handler
Bounce Mail Handler for PHP | This is a "reboot" of PHPMailer-BMH from WorxWare.
SaaSHub - Software Alternatives and Reviews
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of Email Reply Parser or a related project?
README
EmailReplyParser
EmailReplyParser is a PHP library for parsing plain text email content, based on GitHub's email_reply_parser library written in Ruby.
Installation
The recommended way to install EmailReplyParser is through Composer:
composer require willdurand/email-reply-parser
Usage
Instantiate an EmailParser
object and parse your email:
<?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
$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:
$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:
$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 "[email protected]" 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 [[email protected]]
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/phpunit
Contributing
See CONTRIBUTING file.
Credits
- GitHub
- William Durand
License
EmailReplyParser is released under the MIT License. See the bundled LICENSE file for details.
*Note that all licence references and agreements mentioned in the Email Reply Parser README section above
are relevant to that project's source code only.