Polyscope - The agent-first dev environment for Laravel

Beautymail

snowfire/beautymail image

Beautymail stats

Downloads
594.5K
Stars
1,167
Open Issues
1
Forks
222

View on GitHub →

Send beautiful html emails with Laravel

Beautymail for Laravel

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.

Index:

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:

Widgets template

Minty by Stamplia:

Widgets template

Sunny

Sunny template

Installation

Add the package to your composer.json by running:

composer require snowfire/beautymail

When it's installed, 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/web.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

Lumen support

In order to get this working on Lumen follow the installation instructions except for the artisan vendor:publish command, since Lumen does not provide this command. Instead you have to copy the assets folder from vendor/snowfire/beautymail/public/ to the public folder in your Lumen project manually.

Make sure to also put the beautymail.php config file in the config folder (default available in src/config/settings.php)

Enable mailing in Lumen

After this you will need to install and configure illuminate/mailer with:

composer require illuminate/mail

and add this to your bootstrap/app.php:

$app->withFacades();
$app->register(App\Providers\AppServiceProvider::class);

See this blog post for more details and how to use different mail libraries in lumen:

Configure Beautymail classes and configuration parameters

In order to get Beautymail working on Lumen you need to add the following to your bootstrap/app.php in order to resolve missing config files, parameters and classes (before you register BeautymailServiceProvider):

// Provide required path variables
$app->instance('path.config', env("STORAGE_DIR", app()->basePath()) . DIRECTORY_SEPARATOR . 'config');
$app->instance('path.public', env("STORAGE_DIR", app()->basePath()) . DIRECTORY_SEPARATOR . 'public');
 
// Enable config for beautymail
$app->configure('beautymail');
 
// Provide class alliases to resolve Request and Config
class_alias(\Illuminate\Support\Facades\Request::class, "\Request");
class_alias(\Illuminate\Support\Facades\Config::class, "\Config");

Start using Beautymail

Congratulations, you can know start using bBautmail in Lumen. See: Send your first Beauty mail on what to do next.

Cube

Laravel Newsletter

Join 40k+ other developers and never miss out on new tips, tutorials, and more.


Snowfire Beautymail Related Articles

Laravel Cloud logo

Laravel Cloud

Easily create and manage your servers and deploy your Laravel applications in seconds.

Laravel Cloud
SaaSykit: Laravel SaaS Starter Kit logo

SaaSykit: Laravel SaaS Starter Kit

SaaSykit is a Multi-tenant Laravel SaaS Starter Kit that comes with all features required to run a modern SaaS. Payments, Beautiful Checkout, Admin Panel, User dashboard, Auth, Ready Components, Stats, Blog, Docs and more.

SaaSykit: Laravel SaaS Starter Kit
Acquaint Softtech logo

Acquaint Softtech

Acquaint Softtech offers AI-ready Laravel developers who onboard in 48 hours at $3000/Month with no lengthy sales process and a 100 percent money-back guarantee.

Acquaint Softtech
Shift logo

Shift

Running an old Laravel version? Instant, automated Laravel upgrades and code modernization to keep your applications fresh.

Shift
Typesense Search logo

Typesense Search

Typesense is an open source, blazing-fast search engine, optimized for helping you build delightful search experiences for your sites and apps. Natively integrated with Laravel Scout.

Typesense Search
Get expert guidance in a few days with a Laravel code review logo

Get expert guidance in a few days with a Laravel code review

Expert code review! Get clear, practical feedback from two Laravel devs with 10+ years of experience helping teams build better apps.

Get expert guidance in a few days with a Laravel code review