Snowfire / Beautymail by emilsundberg

Send beautiful html emails with Laravel
631,322
1,208
32
Package Data
Maintainer Username: emilsundberg
Maintainer Contact: emil@snowfire.net (Emil Sundberg)
Package Create Date: 2014-07-27
Package Last Update: 2024-03-23
Language: Blade
License: MIT
Last Refreshed: 2024-05-03 15:02:14
Package Statistics
Total Downloads: 631,322
Monthly Downloads: 4,416
Daily Downloads: 164
Total Stars: 1,208
Total Watchers: 32
Total Forks: 199
Total Open Issues: 3

Beautymail for Laravel 5

Beautymail makes it super easy to send beautiful responsive HTML emails. It's made for things like:

  • Welcome emails
  • Password reminders
  • Invoices
  • Data exports

If you're on Laravel 4, use the 1.x branch.

Templates

There are tons of great looking HTML email templates out there. Campaign Monitor and Mailchimp has released hundreds for free. It is pretty simple to adapt a template to Beautymail. If you do, please send a PR.

Widgets by Campaign Monitor:

Widget Template

Minty by Stamplia:

Widget Template

Sunny

Widget Template

Installation

Add the package to your composer.json by running:

composer require snowfire/beautymail dev-master

When it's installed, add it to the providers list in config/app.php

Snowfire\Beautymail\BeautymailServiceProvider::class,

Publish assets to your public folder

php artisan vendor:publish --provider="Snowfire\Beautymail\BeautymailServiceProvider"

Configure your settings such as logo url and social links in config/beautymail.php

Send your first Beauty mail

Add this to your routes.php

Route::get('/test', function()
{
	$beautymail = app()->make(Snowfire\Beautymail\Beautymail::class);
    $beautymail->send('emails.welcome', [], function($message)
    {
        $message
			->from('bar@example.com')
			->to('foo@example.com', 'John Smith')
			->subject('Welcome!');
    });

});

Now create resources/views/emails/welcome.blade.php

@extends('beautymail::templates.widgets')

@section('content')

	@include('beautymail::templates.widgets.articleStart')

		<h4 class="secondary"><strong>Hello World</strong></h4>
		<p>This is a test</p>

	@include('beautymail::templates.widgets.articleEnd')


	@include('beautymail::templates.widgets.newfeatureStart')

		<h4 class="secondary"><strong>Hello World again</strong></h4>
		<p>This is another test</p>

	@include('beautymail::templates.widgets.newfeatureEnd')

@stop

That's it!

Options

Template: Widgets

To change colours for the different segments, pass a colour variable:

@include('beautymail::templates.widgets.articleStart', ['color' => '#0000FF'])

Minty template example

@extends('beautymail::templates.minty')

@section('content')

	@include('beautymail::templates.minty.contentStart')
		<tr>
			<td class="title">
				Welcome Steve
			</td>
		</tr>
		<tr>
			<td width="100%" height="10"></td>
		</tr>
		<tr>
			<td class="paragraph">
				This is a paragraph text
			</td>
		</tr>
		<tr>
			<td width="100%" height="25"></td>
		</tr>
		<tr>
			<td class="title">
				This is a heading
			</td>
		</tr>
		<tr>
			<td width="100%" height="10"></td>
		</tr>
		<tr>
			<td class="paragraph">
				More paragraph text.
			</td>
		</tr>
		<tr>
			<td width="100%" height="25"></td>
		</tr>
		<tr>
			<td>
				@include('beautymail::templates.minty.button', ['text' => 'Sign in', 'link' => '#'])
			</td>
		</tr>
		<tr>
			<td width="100%" height="25"></td>
		</tr>
	@include('beautymail::templates.minty.contentEnd')

@stop

Ark template example

@extends('beautymail::templates.ark')

@section('content')

    @include('beautymail::templates.ark.heading', [
		'heading' => 'Hello World!',
		'level' => 'h1'
	])

    @include('beautymail::templates.ark.contentStart')

        <h4 class="secondary"><strong>Hello World</strong></h4>
        <p>This is a test</p>

    @include('beautymail::templates.ark.contentEnd')

    @include('beautymail::templates.ark.heading', [
		'heading' => 'Another headline',
		'level' => 'h2'
	])

    @include('beautymail::templates.ark.contentStart')

        <h4 class="secondary"><strong>Hello World again</strong></h4>
        <p>This is another test</p>

    @include('beautymail::templates.ark.contentEnd')

@stop

Sunny template example

@extends('beautymail::templates.sunny')

@section('content')

    @include ('beautymail::templates.sunny.heading' , [
        'heading' => 'Hello!',
        'level' => 'h1',
    ])

    @include('beautymail::templates.sunny.contentStart')

        <p>Today will be a great day!</p>

    @include('beautymail::templates.sunny.contentEnd')

    @include('beautymail::templates.sunny.button', [
        	'title' => 'Click me',
        	'link' => 'http://google.com'
    ])

@stop