Laravel-Email-Templates-Optimization
Optimize your email templates' styles via native Laravel templating mechanism., (*1)
, (*2)
If you want to send an HTML email you can't just send it with <style></style> tag in it, or link a stylesheet. Most of the email clients will cut it and clients will see your email without any styles., (*3)
The only approach to achieve best email quality is to convert all your styles int inline style="" attributes like this:, (*4)
Source
<!DOCTYPE html>
<html>
<head>
<title>Hello World</title>
<style>
body {
font-size: 14px;
}
h1 {
font-size: 20px;
}
a {
color: #333;
}
</style>
</head>
<body>
<h1>Hello!</h1>
<p class="content">
<a href="https://laravel.com">Laravel</a>
</p>
</body>
</html>
Result
<!DOCTYPE html>
<html>
<head>
<title>Hello World</title>
</head>
<body style="font-size: 14px;">
<h1 style="font-size: 20px;">Hello!</h1>
<p class="content">
<a href="https://laravel.com" style="color: #333;">Laravel</a>
</p>
</body>
</html>
How to achieve that?
- You can precompile your templates, and store and send them as is. But your compiled templates will become too hard to maintain.
- Or you can compile them on every email send like in https://github.com/fedeisas/laravel-mail-css-inliner package. But it will cause an enormous overhead.
With this in mind I made this engine. It compiles css into email templates and at the same time utilises native Laravel's Blade syntax and compile-and-cache approach., (*5)
This means that you can store your email templates as before and they will be compiled on the fly and then cached in order not to recompile every time!, (*6)
Installation
PHP 5.5.9+ or HHVM 3.3+, Composer and Laravel 5.1+ are required., (*7)
To get the latest version of Laravel-Email-Templates-Optimization, simply install it via composer., (*8)
$ composer require "lanin/laravel-email-templates-optimization:0.1.*"
Once package is installed, you need to register the service provider. Open up config/app.php and add the following to the providers key., (*9)
Lanin\Laravel\EmailTemplatesOptimization\ServiceProvider::class,
Usage
What you have to do is just rename your email templates' files from *.blade.php to *.email.php and that's it! This Engine will do the rest for you!, (*10)
Configuration
Furthermore you can tell the engine what static css files to use with your templates to not duplicate them in each of them., (*11)
For this you set copy this into your view.php config:, (*12)
'emails' => [
/*
|--------------------------------------------------------------------------
| Css Files
|--------------------------------------------------------------------------
|
| List of absolute paths to static css files to use in your email templates.
|
| Example: realpath(resource_path('assets/css/emails.css'))
|
*/
'css_files' => [
],
],
Contributing
Please feel free to fork this package and contribute by submitting a pull request to enhance the functionalities., (*13)