fyre / mail
A mail library.
Requires
- fyre/config: ^4.0
- fyre/container: ^1.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.59
- fyre/php-cs-fixer-config: ^1.0
- phpunit/phpunit: ^11
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 toMailManager::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 toMailManager::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 toMailManager::DEFAULT
.
$unloaded = $mailManager->unload($key);
Use
Load a shared Mailer instance.
$key
is a string representing the Mailer key, and will default toMailManager::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.
Create an Email.
$email = $mailer->email();
Get Client
Get the client hostname.
$client = $mailer->getCliet();
Send
Send an Email.
$email
is 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);