Skip to content

Repository files navigation

phpnomad/email

Latest VersionTotal DownloadsPHP VersionLicense

phpnomad/email defines the contract PHPNomad applications use to send transactional mail. It contains a single strategy interface, EmailStrategy, and a failure exception. Concrete sending lives in a separate integration package, so your application code depends on the contract rather than on a specific mailer. Swap the strategy in your bootstrapper and the rest of your code stays the same. The built-in implementation is phpnomad/php-mail-integration, which sends through PHP's mail() function. Anything else (SMTP, a third-party API, a queued background worker) drops in by writing another class that implements the interface.

Installation

composer require phpnomad/email

You will also need a strategy implementation. Install phpnomad/php-mail-integration for the default, or provide your own class that implements EmailStrategy.

Quick Start

Inject EmailStrategy wherever you send mail, then call send() and handle EmailSendFailedException.

<?phpnamespaceMyApp\Notifications;
usePHPNomad\Email\Exceptions\EmailSendFailedException;
usePHPNomad\Email\Interfaces\EmailStrategy;
class NotificationService
{
publicfunction__construct(protectedEmailStrategy$emailStrategy)
{
}
publicfunctionnotify(string$recipient, string$body): void
{
try {
$this->emailStrategy->send(
[$recipient],
'Your account is ready',
$body,
['Content-Type: text/html; charset=UTF-8']
);
} catch (EmailSendFailedException$e) {
// Log and continue, or rethrow depending on your policy.
}
}
}

Overview

  • EmailStrategy interface with a single send(array $to, string $subject, string $body, array $headers): void method
  • EmailSendFailedException thrown by strategies when delivery fails
  • A backend-agnostic contract your application depends on instead of a specific mailer
  • Pairs with phpnomad/php-mail-integration for PHP's built-in mail() function, or any custom strategy you write

Documentation

Full PHPNomad documentation is at phpnomad.com.

License

MIT. See LICENSE.txt.

About

Email strategy interfaces for sending mail through any backend

Topics

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages