php-smtp
php-smtp copied to clipboard
A PHP library for sending SMTP emails.
SMTP
This package is a new SMTP class built from scratch. Many of the existing email libraries are old, bloated, not on GitHub, and worst of all written in camelcase. I wanted something short and simple.
Install
Normal install via Composer.
Config
Everytime you make a new SMTP object, you have to pass a config array. This is how we make the package framework agnostic. The included config file is your reference for the required fields and values.
One method is to pass the array directly from the file:
$mail = new Travis\SMTP(require __DIR__ . '/path/to/config.php');
Another method is to use Laravel to pass a config after manually copying the file to app/config/smtp.php
:
$mail = new Travis\SMTP(Config::get('smtp'));
Note that your config includes multiple connections, and you can choose which one to use when you forge the object:
$mail = new Travis\SMTP($config, 'amazon');
You can also set a default connection in the config array.
Usage
A normal email would go like this:
use Travis\SMTP;
$mail = new SMTP($config);
$mail->to('[email protected]');
$mail->from('[email protected]', 'Paul T.'); // email is required, name is optional
$mail->subject('Hello World');
$mail->body('This is a <b>HTML</b> email.');
$result = $mail->send();
You can add multiple recipients, name is optional:
// add to
$mail->to('[email protected]');
$mail->to('[email protected]');
// add cc
$mail->cc('[email protected]');
$mail->cc('[email protected]');
// add bcc
$mail->bcc('[email protected]');
$mail->bcc('[email protected]');
You can set a custom reply-to address:
$mail->reply('[email protected]', 'Paul T.');
You can add attachments:
$mail->attach('/path/to/file1.png');
$mail->attach('/path/to/file2.png');
You can assign a text version of your email:
$mail->text('This is a text email.');
You can send text-only emails:
$result = $mail->send_text();
Debug Mode
In the config you can flag 'debug_mode' = true;
, which can be helpful in testing your SMTP connections. It will echo server responses from each step in the email sending process.
Limitations
Below are some current limitations. Please feel free to contribute to this ongoing project.
- Does not support encryption.
- Does not support priority level.
- Does not keep connection open for spooling email sends.