fyre/mail

A mail library.

v4.0.5 2024-11-17 00:54 UTC

README

FyreMail is a free, open-source email library for PHP.

Table Of Contents

Installation

Using Composer

composer require fyre/mail

In PHP:

use Fyre\Mail\MailManager;

Basic Usage

$mailManager = new MailManager($container);

Default configuration options will be resolved from the "Mail" key in the Config.

Autoloading

It is recommended to bind the MailManager to the Container as a singleton.

$container->singleton(MailManager::class);

Any dependencies will be injected automatically when loading from the Container.

$mailManager = $container->use(MailManager::class);

Methods

Build

Build a Mailer.

  • $options is an array containing configuration options.
$mailer = $mailManager->build($options);

Mailer dependencies will be resolved automatically from the Container.

Clear

Clear all instances and configs.

$mailManager->clear();

Get Config

Get a Mailer config.

  • $key is a string representing the Mailer key.
$config = $mailManager->getConfig($key);

Alternatively, if the $key argument is omitted an array containing all configurations will be returned.

$config = $mailManager->getConfig();

Has Config

Determine whether a Mailer config exists.

  • $key is a string representing the Mailer key, and will default to MailManager::DEFAULT.
$hasConfig = $mailManager->hasConfig($key);

Is Loaded

Determine whether a Mailer instance is loaded.

  • $key is a string representing the Mailer key, and will default to MailManager::DEFAULT.
$isLoaded = $mailManager->isLoaded($key);

Set Config

Set the Mailer config.

  • $key is a string representing the Mailer key.
  • $options is an array containing configuration options.
$mailManager->setConfig($key, $options);

Unload

Unload a Mailer.

  • $key is a string representing the Mailer key, and will default to MailManager::DEFAULT.
$unloaded = $mailManager->unload($key);

Use

Load a shared Mailer instance.

  • $key is a string representing the Mailer key, and will default to MailManager::DEFAULT.
$mailer = $mailManager->use($key);

Mailer dependencies will be resolved automatically from the Container.

Mailers

You can load a specific mailer by specifying the className option of the $options variable above.

Custom mailers can be created by extending \Fyre\Mail\Mailer, ensuring all below methods are implemented.

Email

Create an Email.

$email = $mailer->email();

Get Client

Get the client hostname.

$client = $mailer->getCliet();

Send

Send an Email.

$mailer->send($email);

Sendmail

The Sendmail mailer can be loaded using custom configuration.

  • $key is a string representing the mailer key.
  • $options is an array containing configuration options.
    • className must be set to \Fyre\Mail\Handlers\SendmailMailer.
    • charset is a string representing the character set, and will default to "utf-8".
    • client is a string representing the client hostname.
$container->use(Config::class)->set('Mail.sendmail', $options);

SMTP

The SMTP mailer can be loaded using custom configuration.

  • $options is an array containing configuration options.
    • className must be set to \Fyre\Mail\Handlers\SmtpMailer.
    • host is a string representing the SMTP host, and will default to "127.0.0.1".
    • username is a string representing the SMTP username.
    • password is a string representing the SMTP password.
    • port is a number indicating the SMTP port, and will default to 465.
    • auth is a boolean indicating whether to authenticate, and will default to false.
    • tls is a boolean indicating whether to use TLS encryption, and will default to false.
    • dsn is a boolean indicating whether to use delivery status notification, and will default to false.
    • keepAlive is a boolean indicating whether to use a persistent connection, and will default to false.
    • charset is a string representing the character set, and will default to "utf-8".
    • client is a string representing the client hostname.
$container->use(Config::class)->set('Mail.smtp', $options);

Emails

Add Attachments

Add attachments.

  • $attachments is an array containing the attachments, where the key is the filename and the value is an array of attachment data.
    • file is a string representing a path to a file.
    • content is a string representing the file data.
    • mimeType is a string representing the MIME content type.
    • contentId is a string representing the content ID.
    • disposition is a string representing the content disposition.
$email->addAttachments($attachments);

For each attachment, a file or content must be supplied.

If the mimeType is omitted it will determined automatically from the file data.

If the disposition is omitted, it will default to "inline" if a contentId is provided, otherwise "attachment".

Add Bcc

Add a bcc address.

  • $email is a string representing the email address.
  • $name is a string representing the name, and will default to the email address.
$email->addBcc($email, $name);

Add Cc

Add a cc address.

  • $email is a string representing the email address.
  • $name is a string representing the name, and will default to the email address.
$email->addCc($email, $name);

Add Reply To

Add a reply to address.

  • $email is a string representing the email address.
  • $name is a string representing the name, and will default to the email address.
$email->addReplyTo($email, $name);

Add To

Add a to address.

  • $email is a string representing the email address.
  • $name is a string representing the name, and will default to the email address.
$email->addTo($email, $name);

Get Attachments

Get the attachments.

$attachments = $email->getAttachments();

Get Bcc

Get the bcc addresses.

$bcc = $email->getBcc();

Get Body HTML

Get the HTML body string.

$html = $email->getBodyHtml();

Get Body Text

Get the text body string.

$text = $email->getBodyText();

Get Boundary

Get the boundary.

$boundary = $email->getBoundary();

Get Cc

Get the cc addresses.

$cc = $email->getCc();

Get Charset

Get the character set.

$charset = $email->getCharset();

Get Format

Get the email format.

$format = $email->getFormat();

Get From

Get the from addresses.

$from = $email->getFrom();

Get Headers

Get the additional headers.

$headers = $email->getHeaders();

Get Message ID

Get the message ID.

$messageId = $email->getMessageId();

Get Priority

Get the priority.

$priority = $email->getPriority();

Get Read Receipt

Get the read recipient addresses.

$readReceipt = $email->getReadReceipt();

Get Recipients

Get the recipient addresses.

$recipients = $email->getRecipients();

Get Reply To

Get the reply to addresses.

$replyTo = $email->getReplyTo();

Get Return Path

Get the return path addresses.

$returnPath = $email->getReturnPath();

Get Sender

Get the sender addresses.

$sender = $email->getSender();

Get Subject

Get the subject.

$subject = $email->getSubject();

Get To

Get the to addresses.

$to = $email->getTo();

Send

Send the email.

$email->send();

Set Attachments

Set the attachments.

  • $attachments is an array containing the attachments, where the key is the filename and the value is an array of attachment data.
    • file is a string representing a path to a file.
    • content is a string representing the file data.
    • mimeType is a string representing the MIME content type.
    • contentId is a string representing the content ID.
    • disposition is a string representing the content disposition.
$email->setAttachments($attachments);

For each attachment, a file or content must be supplied.

If the mimeType is omitted it will determined automatically from the file data.

If the disposition is omitted, it will default to "inline" if a contentId is provided, otherwise "attachment".

Set Bcc

Set the bcc addresses.

  • $emails is an array containing the email addresses, or key-value pairs of email addresses and names.
$email->setBcc($emails);

Set Body Html

Set the body HTML.

  • $html is a string representing the body HTML.
$email->setBodyHtml($html);

Set Body Text

Set the body text.

  • $text is a string representing the body text.
$email->setBodyText($text);

Set Cc

Set the cc addresses.

  • $emails is an array containing the email addresses, or key-value pairs of email addresses and names.
$email->setCc($emails);

Set Charset

Set the character set.

  • $charset is a string representing the character set.
$email->setCharset($charset);

Set Format

Set the email format.

  • $format is a string representing the email format, and must be one of either "html", "text", or "both".
$email->setFormat($format);

Set From

Set the from address.

  • $email is a string representing the email address.
  • $name is a string representing the name, and will default to the email address.
$email->setFrom($email, $name);

Set Headers

Set additional headers.

  • $headers is an array containing additional headers.
$email->setHeaders($headers);

Set Priority

Set the priority.

$email->setPriority($priority);

Set Read Receipt

Set the read recipient address.

  • $email is a string representing the email address.
  • $name is a string representing the name, and will default to the email address.
$email->setReadReceipt($email, $name);

Set Reply To

Set the reply to addresses.

  • $emails is an array containing the email addresses, or key-value pairs of email addresses and names.
$email->setReplyTo($emails);

Set Return Path

Set the return path address.

  • $email is a string representing the email address.
  • $name is a string representing the name, and will default to the email address.
$email->setReturnPath($email, $name);

Set Sender

Set the sender address.

  • $email is a string representing the email address.
  • $name is a string representing the name, and will default to the email address.
$email->setSender($email, $name);

Set Subject

Set the subject.

  • $subject is a string representing the subject.
$email->setSubject($subject);

Set To

Set the to addresses.

  • $emails is an array containing the email addresses, or key-value pairs of email addresses and names.
$email->setTo($emails);