PHPackages                             fyre/mail - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Mail &amp; Notifications](/categories/mail)
4. /
5. fyre/mail

ActiveLibrary[Mail &amp; Notifications](/categories/mail)

fyre/mail
=========

A mail library.

v5.0.1(7mo ago)093[1 issues](https://github.com/elusivecodes/FyreMail/issues)2MITPHP

Since Dec 13Pushed 7mo ago1 watchersCompare

[ Source](https://github.com/elusivecodes/FyreMail)[ Packagist](https://packagist.org/packages/fyre/mail)[ RSS](/packages/fyre-mail/feed)WikiDiscussions main Synced 3w ago

READMEChangelog (10)Dependencies (6)Versions (41)Used By (2)

FyreMail
========

[](#fyremail)

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

Table Of Contents
-----------------

[](#table-of-contents)

- [Installation](#installation)
- [Basic Usage](#basic-usage)
- [Methods](#methods)
- [Mailers](#mailers)
    - [Debug](#debug)
    - [Sendmail](#sendmail)
    - [SMTP](#smtp)
- [Emails](#emails)

Installation
------------

[](#installation)

**Using Composer**

```
composer require fyre/mail

```

In PHP:

```
use Fyre\Mail\MailManager;
```

Basic Usage
-----------

[](#basic-usage)

- `$container` is a [*Container*](https://github.com/elusivecodes/FyreContainer).
- `$config` is a [*Config*](https://github.com/elusivecodes/FyreConfig).

```
$mailManager = new MailManager($container);
```

Default configuration options will be resolved from the "*Mail*" key in the [*Config*](https://github.com/elusivecodes/FyreConfig).

**Autoloading**

It is recommended to bind the *MailManager* to the [*Container*](https://github.com/elusivecodes/FyreContainer) as a singleton.

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

Any dependencies will be injected automatically when loading from the [*Container*](https://github.com/elusivecodes/FyreContainer).

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

Methods
-------

[](#methods)

**Build**

Build a [*Mailer*](#mailers).

- `$options` is an array containing configuration options.

```
$mailer = $mailManager->build($options);
```

[*Mailer*](#mailers) dependencies will be resolved automatically from the [*Container*](https://github.com/elusivecodes/FyreContainer).

**Clear**

Clear all instances and configs.

```
$mailManager->clear();
```

**Get Config**

Get a [*Mailer*](#mailers) config.

- `$key` is a string representing the [*Mailer*](#mailers) 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*](#mailers) config exists.

- `$key` is a string representing the [*Mailer*](#mailers) key, and will default to `MailManager::DEFAULT`.

```
$hasConfig = $mailManager->hasConfig($key);
```

**Is Loaded**

Determine whether a [*Mailer*](#mailers) instance is loaded.

- `$key` is a string representing the [*Mailer*](#mailers) key, and will default to `MailManager::DEFAULT`.

```
$isLoaded = $mailManager->isLoaded($key);
```

**Set Config**

Set the [*Mailer*](#mailers) config.

- `$key` is a string representing the [*Mailer*](#mailers) key.
- `$options` is an array containing configuration options.

```
$mailManager->setConfig($key, $options);
```

**Unload**

Unload a [*Mailer*](#mailers).

- `$key` is a string representing the [*Mailer*](#mailers) key, and will default to `MailManager::DEFAULT`.

```
$unloaded = $mailManager->unload($key);
```

**Use**

Load a shared [*Mailer*](#mailers) instance.

- `$key` is a string representing the [*Mailer*](#mailers) key, and will default to `MailManager::DEFAULT`.

```
$mailer = $mailManager->use($key);
```

[*Mailer*](#mailers) dependencies will be resolved automatically from the [*Container*](https://github.com/elusivecodes/FyreContainer).

Mailers
-------

[](#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*](#emails).

```
$email = $mailer->email();
```

**Get Client**

Get the client hostname.

```
$client = $mailer->getCliet();
```

**Send**

Send an [*Email*](#emails).

- `$email` is an [*Email*](#emails).

```
$mailer->send($email);
```

Debug
-----

[](#debug)

The Debug 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\DebugMailer`.
    - `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.debug', $options);
```

**Clear**

Clear the sent emails.

```
$mailer->clear();
```

**Get Sent Emails**

Get the sent emails.

```
$sentEmails = $mailer->getSentEmails();
```

### Sendmail

[](#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

[](#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
------

[](#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);
```

###  Health Score

38

—

LowBetter than 83% of packages

Maintenance62

Regular maintenance activity

Popularity9

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity62

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~36 days

Recently: every ~30 days

Total

40

Last Release

232d ago

Major Versions

v1.1.4 → v2.02023-08-11

v2.0.7 → v3.02024-10-31

v3.0.1 → v4.02024-11-02

v4.1.5 → v5.02025-10-29

### Community

Maintainers

![](https://www.gravatar.com/avatar/fad81fd5941e3a637c8a5749d05ae3ed9314d5e2fee57f59c3d9ec3b41259c6b?d=identicon)[elusivecodes](/maintainers/elusivecodes)

---

Top Contributors

[![elusivecodes](https://avatars.githubusercontent.com/u/18050480?v=4)](https://github.com/elusivecodes "elusivecodes (27 commits)")

---

Tags

emailmailphpsendmailsmtp

###  Code Quality

TestsPHPUnit

Code StylePHP CS Fixer

### Embed Badge

![Health badge](/badges/fyre-mail/health.svg)

```
[![Health](https://phpackages.com/badges/fyre-mail/health.svg)](https://phpackages.com/packages/fyre-mail)
```

###  Alternatives

[mattketmo/email-checker

Throwaway email detection library

2752.1M5](/packages/mattketmo-email-checker)[sarfraznawaz2005/noty

Laravel package to incorporate noty flash notifications into laravel.

324.5k](/packages/sarfraznawaz2005-noty)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
