php-extended/php-email-address-object

A library that implements the php-extended/php-email-address-interface interface library.


README

A library that implements the php-extended/php-email-address-interface library.

coverage build status

Installation

The installation of this library is made via composer. Download composer.phar from their website. Then add to your composer.json :

	"require": {
		...
		"php-extended/php-email-address-object": "^3"
		...
	}

Then run php composer.phar update to install this library. The autoloading of all classes of this library is made through composer's autoloader.

Basic Usage

To use this interface, you may do the following :


use PhpExtended\Email\EmailAddress;
use PhpExtended\Email\Mailbox;
use PhpExtended\Email\MailboxGroup;
use PhpExtended\Email\MailboxGroupList;

$email = new EmailAddress('example', 'example.com'); // example@example.com
$email->__toString(); // echo example@example.com

$mailbox = new Mailbox($email, 'Example, Inc');
$mailbox->__toString(); // echo "Example, Inc" <example@example.com>

$mailboxList = new MailboxList([$mailbox]);
$mailboxList->__toString(); // echo "Example, Inc" <example@example.com>

$mailboxGroup = new MailboxGroup($mailboxList, 'All Examples');
$mailboxGroup->__toString(); // echo "All Examples": "Example, Inc" <example@example.com>

$mailboxGroupList = new MailboxGroupList([$mailboxGroup]);
$mailboxGroupList = $mailboxGroupList->withEmailAddress(new EmailAddress('example2', 'example.com'), 'Example2, Inc', 'Other Examples');
$mailboxGroupList->__toString(); // echo "All Examples": "Example, Inc" <example@example.com>; "Other Examples": "Example2, Inc" <example2@example.com>

$emails = $mailboxGroupList->collectEmailAddresses();
echo implode(', ', iterator_to_array($emails)); // echo "example@example.com, example2@example.com"

To parse email addresses, you may do the following :


use PhpExtended\Email\EmailAddressParser;

$parser = new EmailAddressParser();
$email = $parser->parse('email@example.com');
// $email instanceof \PhpExtended\Email\EmailAddress

or, for headers of requests :


use PhpExtended\Email\MailboxGroupListParser;

$parser = new MailboxGroupListParser();
$list = $parser->parse('Group: Toto toto@example.com; Group2: toto2@example.com, "Tata \"" tata@example.com');
// $list instanceof \PhpExtended\Email\MailboxGroupList

echo $list->collectEmailAddresses();
// echo "toto@example.com, toto2@example.com, tata@example.com"

Test data

This library was tested against the following data sets:

If you can find other data sets to test against, just file an issue and i will try to test this library against it.

License

MIT (See license file).