Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Email package for FuelPHP
Failed to load latest commit information.
classes style fix
config style fixes
bootstrap.php style fix
composer.json Add composer.json Update

Fuel Email Package.

A full fledged email class for Fuel. Send mails using php's mail function, sendmail or SMTP.


  • Send plain/text or html with (optional) alternative plain/text bodies using mail, sendmail or SMTP.
  • Add attachments, normal or inline and string or file.
  • Automatic inline file attachments for html bodies.
  • Configurable attachment paths.


$mail = Email::forge();
$mail->from('', 'Your Name Here');

// Set to

// Set with name
$mail->to('', 'His/Her Name');

// Set as arrau
    // Without name

    // With name
    '' => 'His/Her Name',

// Work the same for ->cc and ->bcc and ->reply_to

// Set a body message
$email->body('My email body');

// Set a html body message
$email->html_body(\View::forge('email/template', $email_data));


    By default this will also generate an alt body from the html,
    and attach any inline files (not paths like http://...)


// Set an alt body
$email->alt_body('This is my alt body, for non-html viewers.');

// Set a subject
$email->subject('This is the subject');

// Change the priority

// And send it
$result = $email->send();


+ \EmailValidationFailedException, thrown when one or more email addresses doesn't pass validation
+ \EmailSendingFailedException, thrown when the driver failed to send the exception


// Use the default config and change the driver
$email = \Email::forge('default', array('driver' => 'smtp'));
$email->subject('My Subject');
$email->html_body(\View::forge('email/template', $email_data));
$email->from('', 'It's Me!');
$email->to('', 'It's the Other!');

catch(\EmailValidationFailedException $e)
    // The validation failed
catch(\EmailSendingFailedException $e)
    // The driver could not send the email


These can me one of the following:

+ \Email::P_LOWEST - 1 (lowest)
+ \Email::P_LOW - 2 (low)
+ \Email::P_NORMAL - 3 (normal) - this is the default
+ \Email::P_HIGH - 4 (high)
+ \Email::P_HIGHEST - 5 (highest)


There are multiple ways to add attachments:

$email = Email::forge();

// Add an attachment

// Add an inline attachment
// Add a cid here to point to the html
$email->attach(DOCROOT.'dir/my_img.png', true, 'cid:my_conten_id');

You can also add string attachments

$contents = file_get_contents($my_file);
$email->string_attach($contents, $filename);

By default html images are auto included, but it only includes local files. Look at the following html to see how it works.

// This is included
<img src="path/to/my/file.png" />

// This is not included
<img src="http://remote_host/file.jpeg" />


The drivers allow the use of this library with mostly anything that can send mails.


Mailgun is an online service by Rackspace ( that allows you to send emails by demand. You will need to install the mailgun library ( with composer in your FuelPHP.

Once you have installed the package you will have to set up the config for your App:

return array(
     * Override default Email.php settings
    'defaults' => array(
        'driver' => 'mailgun',
        'mailgun' => array(
            'key' => 'YOUR KEY',
            'domain' => 'YOUR DOMAIN'

That's it. Questions?

Something went wrong with that request. Please try again.