olssonm/email-address

Package to work with email addresses

v1.3 2024-02-12 22:05 UTC

This package is auto-updated.

Last update: 2024-04-12 22:26:54 UTC


README

Supported PHP-versions Latest Version on Packagist Build Status Software License

Simple package where you can extract all the parts of an email address. Among the use cases is the retrieval of the actual delivery-address for a subaddress (i.e. "plus addressing", "tagged addressing" etc.).

Available is also an email address builder to construct an address based on parts – as well as a simple validator (using egulias/email-validator.)

Note: Currently only subaddresses with + is supported, which is used by a vast majority of e-mail providers that support subaddressing.

Requirements

This package requires PHP 8.1 or newer.

Installation

composer require olssonm/email-address

Usage

Parser

use Olssonm\EmailAddress\EmailAddress;

// Returns a `Olssonm\EmailAddress\Entity\EmailAddress`-instance
$email = EmailAddress::parse('test+tag@example.com');

echo $email->address;
// test+tag@example.com

echo $email->local;
// test+tag

echo $email->delivery;
// test

echo $email->tag;
// tag

echo $email->domain;
// example.com

Builder

use Olssonm\EmailAddress\EmailAddress;

// Returns a `Olssonm\EmailAddress\Entity\EmailAddress`-instance via `get()`
$email = EmailAddress::build()
    ->delivery('test')
    ->tag('tag')
    ->domain('example.com')
    ->get();

echo $email->address;
// test@example.com

A clever usage of the builder is the ability to change and/or remove the subaddressing-part:

$email = EmailAddress::build()
    ->address('test+tag@example.com')
    ->tag(null)
    ->get()

echo $email->address;
// test@example.com
$email = EmailAddress::build()
    ->address('test+tag@example.com')
    ->tag('mytag')
    ->get()

echo $email->address;
// test+mytag@example.com

Note, the address()-method for the builder uses the parser – i.e. an exception may be thrown if the address is invalid.

Validator

use Olssonm\EmailAddress\EmailAddress;

// true
EmailAddress::validate('test@example.com');

Exceptions

If an invalid e-mail address is parsed, an Olssonm\EmailAddress\Exceptions\InvalidEmailAddressException will be thrown. A good idea is to validate the e-mail address before parsing it.

License

The MIT License (MIT). Please see the LICENSE for more information.

© 2023 Marcus Olsson.