mendicm / laravel-inky
Foundation Inky email templates in Laravel
Requires
- dieterholvoet/inky: ^1.3.7
- illuminate/support: 5.1.*|5.2.*|5.3.*|5.4.*|5.5.*|5.6.*|5.7.*|5.8.*
- illuminate/view: 5.1.*|5.2.*|5.3.*|5.4.*|5.5.*|5.6.*|5.7.*|5.8.*
- symfony/css-selector: ^2.7|^3.0|^4.0
- symfony/dom-crawler: ^2.7|^3.0|^4.0
- tijsverkoyen/css-to-inline-styles: ^2.2
Requires (Dev)
- graham-campbell/testbench: ^3.2
- mockery/mockery: ^0.9.5
- phpunit/phpunit: ~5.4
README
Allows you to use Foundation's Inky email templates nicely in Laravel 5.
Any views with a .inky.php
extension will be compiled with both Inky and Blade, allowing you to use both templating engines seamlessly together. CSS is automatically inlined so styles work in email clients that don't support external stylesheets.
Installation
Require with composer
composer require mendicm/laravel-inky:0.3.0
Laravel versions below 5.5:
Once installed, you'll need to register the service provider. Open config/app.php
and add to the providers
key:
Petecoop\LaravelInky\InkyServiceProvider::class
Usage
Check the Foundation for Emails docs for full usage on how to use Inky and Foundation for Emails CSS.
Create an Inky view e.g. emails/welcome.inky.php
<container> <row> <columns>Welcome, {{ $name }}</columns> </row> </container>
Use Mail
as usual in Laravel
Mail::send('emails.welcome', ['name' => $user->name], function ($m) use ($user) { $m->from('hello@app.com', 'Your Application'); $m->to($user->email, $user->name)->subject('Welcome!'); });
You can create a Blade layout to inherit from e.g. emails/layout.inky.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width"/> <link rel="stylesheet" href="foundation-emails.css"> </head> <body> @yield('content') </body> </html>
then
@extends('emails.layout') @section('content') <container> <row> <columns>Welcome, {{ $name }}</columns> </row> </container> @stop
CSS Inlining
<style>
and <link rel="stylesheet">
are automatically inlined.
The location of your <link rel="stylesheet">
href
is resolved to the resources/assets/css
directory, so in the example above it expects some CSS at resources/assets/css/foundation-emails.css
.