Add email template

This commit is contained in:
Deon George 2021-06-13 17:48:55 +10:00
parent 182f877701
commit 2cae5d984c
7 changed files with 446 additions and 3 deletions

View File

@ -16,7 +16,7 @@ abstract class Protocol
// Our product code // Our product code
// @todo Move These to a config file // @todo Move These to a config file
protected const product_code = 'AB8D'; protected const product_code = 'AB8D';
protected const setup = 1; public const setup = 1;
// Enable extra debugging // Enable extra debugging
protected bool $DEBUG = FALSE; protected bool $DEBUG = FALSE;

View File

@ -6,8 +6,9 @@
"license": "MIT", "license": "MIT",
"require": { "require": {
"php": "^8.0", "php": "^8.0",
"ext-sockets": "*",
"ext-pcntl": "*", "ext-pcntl": "*",
"ext-sockets": "*",
"eduardokum/laravel-mail-auto-embed": "^1.0",
"fideloper/proxy": "^4.4", "fideloper/proxy": "^4.4",
"fruitcake/laravel-cors": "^2.0", "fruitcake/laravel-cors": "^2.0",
"laravel/framework": "^8.0", "laravel/framework": "^8.0",

62
composer.lock generated
View File

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "84a3cf3f8e76f0da1558274718fd1a7a", "content-hash": "d362d42dec593149f79613fde5510165",
"packages": [ "packages": [
{ {
"name": "asm89/stack-cors", "name": "asm89/stack-cors",
@ -354,6 +354,65 @@
], ],
"time": "2020-11-24T19:55:57+00:00" "time": "2020-11-24T19:55:57+00:00"
}, },
{
"name": "eduardokum/laravel-mail-auto-embed",
"version": "1.0.4",
"source": {
"type": "git",
"url": "https://github.com/eduardokum/laravel-mail-auto-embed.git",
"reference": "918c3aff220d965fbaee96ae4d48a09036381bdf"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/eduardokum/laravel-mail-auto-embed/zipball/918c3aff220d965fbaee96ae4d48a09036381bdf",
"reference": "918c3aff220d965fbaee96ae4d48a09036381bdf",
"shasum": ""
},
"require": {
"illuminate/contracts": ">=5.3",
"illuminate/mail": ">=5.3",
"illuminate/support": ">=5.3",
"php": ">=5.5.0"
},
"require-dev": {
"orchestra/testbench": "~3.0",
"phpunit/phpunit": "~5.0|~6.0"
},
"type": "library",
"extra": {
"laravel": {
"providers": [
"Eduardokum\\LaravelMailAutoEmbed\\ServiceProvider"
]
}
},
"autoload": {
"psr-4": {
"Eduardokum\\LaravelMailAutoEmbed\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Eduardo Gusmão",
"email": "eduguscontra3@hotmail.com"
}
],
"description": "Library for embed images in emails automatically",
"homepage": "https://github.com/eduardokum/laravel-mail-auto-embed",
"keywords": [
"eduardokum",
"laravel-mail-auto-embed"
],
"support": {
"issues": "https://github.com/eduardokum/laravel-mail-auto-embed/issues",
"source": "https://github.com/eduardokum/laravel-mail-auto-embed/tree/master"
},
"time": "2017-09-21T12:11:32+00:00"
},
{ {
"name": "egulias/email-validator", "name": "egulias/email-validator",
"version": "2.1.25", "version": "2.1.25",
@ -8090,6 +8149,7 @@
"prefer-lowest": false, "prefer-lowest": false,
"platform": { "platform": {
"php": "^8.0", "php": "^8.0",
"ext-pcntl": "*",
"ext-sockets": "*" "ext-sockets": "*"
}, },
"platform-dev": [], "platform-dev": [],

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -0,0 +1,12 @@
<a href="{{ $url }}" style="display: inline-block;">
<table style="width: 100%;">
<tr>
<td style="text-align: left">
<img src="file://{{ resource_path('images/mail-logo.png') }}" class="logo">
</td>
<td>
<h1>{{ $slot }}</h1>
</td>
</tr>
</table>
</a>

View File

@ -0,0 +1,65 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="color-scheme" content="light">
<meta name="supported-color-schemes" content="light">
<style>
@media only screen and (max-width: 600px) {
.inner-body {
width: 100% !important;
}
.footer {
width: 100% !important;
}
}
@media only screen and (max-width: 500px) {
.button {
width: 100% !important;
}
}
</style>
</head>
<body>
<table class="wrapper" width="100%" cellpadding="0" cellspacing="0" role="presentation">
<tr>
<td align="center">
<table class="content" width="100%" cellpadding="0" cellspacing="0" role="presentation">
<tr>
<td class="body" width="100%" cellpadding="0" cellspacing="0">
<table class="inner-header" align="center" width="570" cellpadding="0" cellspacing="0" role="presentation">
<tr>
<td class="header">
{{ $header ?? '' }}
</td>
</tr>
</table>
</td>
</tr>
<!-- Email Body -->
<tr>
<td class="body" width="100%" cellpadding="0" cellspacing="0">
<table class="inner-body" align="center" width="570" cellpadding="0" cellspacing="0" role="presentation">
<!-- Body content -->
<tr>
<td class="content-cell">
{{ Illuminate\Mail\Markdown::parse($slot) }}
{{ $subcopy ?? '' }}
</td>
</tr>
</table>
</td>
</tr>
{{ $footer ?? '' }}
</table>
</td>
</tr>
</table>
</body>
</html>

View File

@ -0,0 +1,305 @@
/* Base */
body,
body *:not(html):not(style):not(br):not(tr):not(code) {
box-sizing: border-box;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif,
'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';
position: relative;
}
body {
-webkit-text-size-adjust: none;
background-color: #000;
color: #eeeeee;
height: 100%;
line-height: 1.4;
margin: 0;
padding: 0;
width: 100% !important;
}
p,
ul,
ol,
blockquote {
line-height: 1.4;
text-align: left;
}
a {
color: #3869d4;
}
a img {
border: none;
}
/* Typography */
h1 {
color: #eeeeee;
font-size: 35px;
font-weight: bold;
margin-top: 0;
text-align: left;
}
h2 {
font-size: 16px;
font-weight: bold;
margin-top: 0;
text-align: left;
}
h3 {
font-size: 14px;
font-weight: bold;
margin-top: 0;
text-align: left;
}
p {
font-size: 16px;
line-height: 1.5em;
margin-top: 0;
text-align: left;
}
p.sub {
font-size: 12px;
}
img {
max-width: 100%;
}
/* Layout */
.wrapper {
-premailer-cellpadding: 0;
-premailer-cellspacing: 0;
-premailer-width: 100%;
background-color: #000;
margin: 0;
padding: 0;
width: 100%;
}
.content {
-premailer-cellpadding: 0;
-premailer-cellspacing: 0;
-premailer-width: 100%;
margin: 0;
padding: 0;
width: 100%;
}
/* Header */
.header {
padding: 25px 0;
text-align: center;
margin: 0 auto;
width: 570px;
}
.header a {
color: #eeeeee;
font-size: 19px;
font-weight: bold;
text-decoration: none;
}
/* Logo */
.logo {
height: 100px;
max-height: 100px;
}
/* Body */
.body {
-premailer-cellpadding: 0;
-premailer-cellspacing: 0;
-premailer-width: 100%;
background-color: #000;
border-bottom: 1px solid #000;
border-top: 1px solid #000;
margin: 0;
padding: 0;
width: 100%;
}
.inner-header {
-premailer-cellpadding: 0;
-premailer-cellspacing: 0;
-premailer-width: 570px;
background-color: #000;
border-color: #000;
border-radius: 2px;
border-width: 1px;
box-shadow: 0 2px 0 rgba(0, 0, 150, 0.025), 2px 4px 0 rgba(0, 0, 150, 0.015);
margin: 0 auto;
padding: 0;
width: 570px;
}
.inner-body {
-premailer-cellpadding: 0;
-premailer-cellspacing: 0;
-premailer-width: 570px;
background-color: #222222;
border-color: #00ff00;
border-radius: 2px;
border-width: 1px;
box-shadow: 0 2px 0 rgba(0, 0, 150, 0.025), 2px 4px 0 rgba(0, 0, 150, 0.015);
margin: 0 auto;
padding: 0;
width: 570px;
}
/* Subcopy */
.subcopy {
border-top: 2px solid #eeeeee;
margin-top: 25px;
padding-top: 25px;
}
.subcopy p {
font-size: 14px;
}
/* Footer */
.footer {
-premailer-cellpadding: 0;
-premailer-cellspacing: 0;
-premailer-width: 570px;
margin: 0 auto;
padding: 0;
text-align: center;
width: 570px;
}
.footer p {
color: #b0adc5;
font-size: 12px;
text-align: center;
}
.footer a {
color: #b0adc5;
text-decoration: underline;
}
/* Tables */
.table table {
-premailer-cellpadding: 0;
-premailer-cellspacing: 0;
-premailer-width: 100%;
margin: 30px auto;
width: 100%;
}
.table th {
border-bottom: 1px solid #eeeeee;
margin: 0;
padding-bottom: 8px;
}
.table td {
color: #eeeeee;
font-size: 15px;
line-height: 18px;
margin: 0;
padding: 10px 0;
}
.content-cell {
max-width: 100vw;
padding: 32px;
}
/* Buttons */
.action {
-premailer-cellpadding: 0;
-premailer-cellspacing: 0;
-premailer-width: 100%;
margin: 30px auto;
padding: 0;
text-align: center;
width: 100%;
}
.button {
-webkit-text-size-adjust: none;
border-radius: 4px;
color: #fff;
display: inline-block;
overflow: hidden;
text-decoration: none;
}
.button-blue,
.button-primary {
background-color: #2d3748;
border-bottom: 8px solid #2d3748;
border-left: 18px solid #2d3748;
border-right: 18px solid #2d3748;
border-top: 8px solid #2d3748;
}
.button-green,
.button-success {
background-color: #48bb78;
border-bottom: 8px solid #48bb78;
border-left: 18px solid #48bb78;
border-right: 18px solid #48bb78;
border-top: 8px solid #48bb78;
}
.button-red,
.button-error {
background-color: #e53e3e;
border-bottom: 8px solid #e53e3e;
border-left: 18px solid #e53e3e;
border-right: 18px solid #e53e3e;
border-top: 8px solid #e53e3e;
}
/* Panels */
.panel {
border-left: #3f6982 solid 5px;
margin: 21px 0;
}
.panel-content {
background-color: #edf2f7;
color: #2f373e;
padding: 16px;
}
.panel-content p {
color: #2f373e;
}
.panel-item {
padding: 0;
}
.panel-item p:last-of-type {
margin-bottom: 0;
padding-bottom: 0;
}
/* Utilities */
.break-all {
word-break: break-all;
}