Update email look

This commit is contained in:
DariusIII
2025-12-10 14:45:44 +01:00
parent 4e5fca3968
commit 649454e6e7
13 changed files with 341 additions and 168 deletions
+4
View File
@@ -2,6 +2,7 @@
namespace App\Observers;
use App\Jobs\SendAccountChangedEmail;
use App\Models\User;
use App\Models\UserActivity;
@@ -51,6 +52,9 @@ class UserActivityObserver
'updated_by' => auth()->user()?->username ?? 'System',
],
]);
// Send email notification to user about role change
SendAccountChangedEmail::dispatch($user);
}
}
@@ -1,13 +1,24 @@
@extends('emails.email_layout')
@section('title')
Your account is about to expire
Account Expiration Notice
@endsection
@section('site_name', $site)
@section('content')
Dear {{ $username }},
<br>
Your account role {{ $account }} is about to expire in less than {{ $days }} day(s).
<br><br><br>
Greetings from {{ $site }}
<p class="greeting">Dear {{ $username }},</p>
<div class="warning-box">
<strong>⚠️ Attention Required:</strong> Your account role <strong>{{ $account }}</strong> is about to expire in less than <strong>{{ $days }} day(s)</strong>.
</div>
<p>To continue enjoying uninterrupted access to all your current features and benefits, please take action before your subscription expires.</p>
<p>If you have any questions about renewing your account or need assistance, please don't hesitate to contact us.</p>
<div class="signature">
<p>Best regards,</p>
<p><strong>The {{ $site }} Team</strong></p>
</div>
@endsection
+19 -6
View File
@@ -1,13 +1,26 @@
@extends('emails.email_layout')
@section('title')
Your account level has been changed
Account Level Changed
@endsection
@section('site_name', $site)
@section('content')
Dear {{ $username }},
<br>
Your account has been changed to {{ $account }}
<br><br><br>
Greetings from {{ $site }}
<p class="greeting">Dear {{ $username }},</p>
<p>We wanted to let you know that your account level has been updated.</p>
<div class="info-box">
<strong>🔄 New Account Level:</strong> {{ $account }}
</div>
<p>Your new account level is now active, and you can start enjoying all the associated features and benefits immediately.</p>
<p>If you have any questions about your new account level or need assistance, please don't hesitate to contact us.</p>
<div class="signature">
<p>Best regards,</p>
<p><strong>The {{ $site }} Team</strong></p>
</div>
@endsection
+15 -2
View File
@@ -1,9 +1,22 @@
@extends('emails.email_layout')
@section('title')
User Account deleted
User Account Deleted
@endsection
@section('site_name', $site)
@section('content')
User <b>{{ $username }}</b> has deleted his/hers account from {{ $site }}.
<p>This is a notification that a user has deleted their account from <strong>{{ $site }}</strong>.</p>
<div class="info-box">
<strong>👤 Deleted Account:</strong> {{ $username }}
</div>
<p>No further action is required. This email is for informational purposes only.</p>
<div class="signature">
<p>Best regards,</p>
<p><strong>The {{ $site }} System</strong></p>
</div>
@endsection
@@ -1,13 +1,26 @@
@extends('emails.email_layout')
@section('title')
Your account has expired and account level has been downgraded
Account Expired
@endsection
@section('site_name', $site)
@section('content')
Dear {{ $username }},
<br>
Your account has expired and has been downgraded to {{ $account }}
<br><br><br>
Greetings from {{ $site }}
<p class="greeting">Dear {{ $username }},</p>
<p>We regret to inform you that your account subscription has expired.</p>
<div class="warning-box">
<strong>📉 Account Downgraded:</strong> Your account has been automatically downgraded to <strong>{{ $account }}</strong>.
</div>
<p>Don't worry you can still access the site with your downgraded account level. If you'd like to regain access to all your previous features and benefits, please consider renewing your subscription.</p>
<p>If you have any questions or need assistance with the renewal process, please don't hesitate to contact us.</p>
<div class="signature">
<p>Best regards,</p>
<p><strong>The {{ $site }} Team</strong></p>
</div>
@endsection
+11 -2
View File
@@ -1,9 +1,18 @@
@extends('emails.email_layout')
@section('title')
Contact form submitted
Contact Form Submission
@endsection
@section('content')
{!! nl2br(e($mailBody)) !!}
<p>A new contact form has been submitted.</p>
<div class="info-box">
<strong>📝 Message:</strong>
<div style="margin-top: 10px;">
{!! nl2br(e($mailBody)) !!}
</div>
</div>
<p>Please respond to this inquiry at your earliest convenience.</p>
@endsection
+131 -28
View File
@@ -1,49 +1,152 @@
<!DOCTYPE html>
<html>
<head>
<title>
@yield('title')
</title>
<link href="https://fonts.googleapis.com/css?family=Lato:100" rel="stylesheet" type="text/css">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>@yield('title')</title>
<style>
html, body {
height: 40%;
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
line-height: 1.6;
color: #333333;
background-color: #f4f4f7;
padding: 20px;
}
.email-wrapper {
max-width: 600px;
margin: 0 auto;
background-color: #ffffff;
border-radius: 8px;
overflow: hidden;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}
.email-header {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: #ffffff;
padding: 30px 40px;
text-align: center;
}
.email-header h1 {
font-size: 24px;
font-weight: 600;
margin: 0;
padding: 0;
width: 40%;
color: #0a2b1d;
display: table;
font-weight: 100;
font-family: \'Lato\', sans-serif;
}
.container {
text-align: center;
display: table-cell;
vertical-align: middle;
.email-body {
padding: 40px;
}
.content {
text-align: center;
.email-content {
font-size: 16px;
color: #51545e;
}
.email-content p {
margin-bottom: 16px;
}
.greeting {
font-size: 18px;
color: #333333;
margin-bottom: 20px;
}
.signature {
margin-top: 30px;
padding-top: 20px;
border-top: 1px solid #eaeaea;
color: #6b6e76;
}
.button {
display: inline-block;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: #ffffff !important;
text-decoration: none;
padding: 14px 28px;
border-radius: 6px;
font-weight: 600;
margin: 20px 0;
transition: transform 0.2s ease;
}
.title {
font-size: 72px;
margin-bottom: 40px;
.button:hover {
transform: translateY(-2px);
}
.info-box {
background-color: #f8f9fa;
border-left: 4px solid #667eea;
padding: 16px 20px;
margin: 20px 0;
border-radius: 0 6px 6px 0;
}
.warning-box {
background-color: #fff3cd;
border-left: 4px solid #ffc107;
padding: 16px 20px;
margin: 20px 0;
border-radius: 0 6px 6px 0;
color: #856404;
}
.email-footer {
background-color: #f8f9fa;
padding: 24px 40px;
text-align: center;
font-size: 13px;
color: #9a9ea6;
}
.email-footer p {
margin: 4px 0;
}
a {
color: #667eea;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
.link-text {
word-break: break-all;
background-color: #f8f9fa;
padding: 12px 16px;
border-radius: 6px;
font-family: monospace;
font-size: 14px;
display: block;
margin: 10px 0;
}
</style>
</head>
<body>
<div class="container">
<div>
@yield('content')
<div class="email-wrapper">
<div class="email-header">
<h1>@yield('title')</h1>
</div>
<div class="email-body">
<div class="email-content">
@yield('content')
</div>
</div>
<div class="email-footer">
<p>© {{ date('Y') }} @yield('site_name', config('app.name')). All rights reserved.</p>
<p>This is an automated message. Please do not reply directly to this email.</p>
</div>
</div>
</div>
</body>
</html>
</html>
@@ -1,14 +1,29 @@
@extends('emails.email_layout')
@section('title')
Forgotten Password
Password Reset Request
@endsection
@section('site_name', $site)
@section('content')
<p class="greeting">Hello,</p>
Someone has requested a password reset for this email address.
<br>
To reset the password use the following link: <a href="{{$resetLink}}">{{$resetLink}}</a><br>
<br><br><br>
Greetings from {{ $site }}
<p>We received a request to reset the password associated with this email address.</p>
<div style="text-align: center;">
<a href="{{ $resetLink }}" class="button">Reset Password</a>
</div>
<p>Or copy and paste this link into your browser:</p>
<span class="link-text">{{ $resetLink }}</span>
<div class="warning-box">
<strong>🔒 Security Notice:</strong> If you didn't request this password reset, you can safely ignore this email. Your password will remain unchanged.
</div>
<div class="signature">
<p>Best regards,</p>
<p><strong>The {{ $site }} Team</strong></p>
</div>
@endsection
+27 -91
View File
@@ -1,99 +1,35 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Invitation to {{ $siteName }}</title>
<style>
body {
font-family: Arial, sans-serif;
line-height: 1.6;
color: #333;
max-width: 600px;
margin: 0 auto;
padding: 20px;
}
.header {
background-color: #f8f9fa;
padding: 20px;
text-align: center;
border-radius: 8px;
margin-bottom: 20px;
}
.content {
background-color: #ffffff;
padding: 20px;
border: 1px solid #dee2e6;
border-radius: 8px;
}
.button {
display: inline-block;
background-color: #007bff;
color: #ffffff;
text-decoration: none;
padding: 12px 24px;
border-radius: 4px;
margin: 20px 0;
}
.button:hover {
background-color: #0056b3;
}
.footer {
margin-top: 20px;
padding: 20px;
background-color: #f8f9fa;
border-radius: 8px;
font-size: 12px;
color: #6c757d;
}
.expiry-notice {
background-color: #fff3cd;
border: 1px solid #ffeaa7;
color: #856404;
padding: 12px;
border-radius: 4px;
margin: 15px 0;
}
</style>
</head>
<body>
<div class="header">
<h1>You're Invited!</h1>
<p>{{ $invitedBy->username }} has invited you to join {{ $siteName }}</p>
@extends('emails.email_layout')
@section('title')
You're Invited to {{ $siteName }}!
@endsection
@section('site_name', $siteName)
@section('content')
<p class="greeting">Hello!</p>
<p>Great news! <strong>{{ $invitedBy->username }}</strong> has invited you to join <strong>{{ $siteName }}</strong>, our exclusive community.</p>
<div style="text-align: center;">
<a href="{{ $registerUrl }}" class="button">Accept Invitation</a>
</div>
<div class="content">
<h2>Welcome to {{ $siteName }}</h2>
<p>Or copy and paste this link into your browser:</p>
<span class="link-text">{{ $registerUrl }}</span>
<p>Hello!</p>
<div class="warning-box">
<strong>⚠️ Important:</strong> This invitation will expire on <strong>{{ $expiresAt->format('F j, Y \a\t g:i A') }}</strong>. Please complete your registration before this date.
</div>
<p>You have been invited by <strong>{{ $invitedBy->username }}</strong> to join {{ $siteName }}, our exclusive community.</p>
<div class="info-box">
<strong>💡 What's Next?</strong> Click the button above to create your account and start exploring everything {{ $siteName }} has to offer.
</div>
<p>To accept this invitation and create your account, click the button below:</p>
<div style="text-align: center;">
<a href="{{ $registerUrl }}" class="button">Accept Invitation</a>
</div>
<p>Or copy and paste this link into your browser:</p>
<p style="word-break: break-all; background-color: #f8f9fa; padding: 10px; border-radius: 4px;">
{{ $registerUrl }}
</p>
<div class="expiry-notice">
<strong>⚠️ Important:</strong> This invitation will expire on {{ $expiresAt->format('F j, Y \a\t g:i A') }}.
Please complete your registration before this date.
</div>
<p>If you have any questions, please don't hesitate to contact us.</p>
<p>If you have any questions, please don't hesitate to contact us after registering.</p>
<div class="signature">
<p>Welcome aboard!</p>
<p>The {{ $siteName }} Team</p>
<p><strong>The {{ $siteName }} Team</strong></p>
</div>
<div class="footer">
<p>This invitation was sent to {{ $invitation->email }}. If you did not expect this invitation, you can safely ignore this email.</p>
<p>© {{ date('Y') }} {{ $siteName }}. All rights reserved.</p>
</div>
</body>
</html>
@endsection
@@ -1,9 +1,22 @@
@extends('emails.email_layout')
@section('title')
New user registered
New User Registration
@endsection
@section('site_name', $site)
@section('content')
User <b>{{ $username }}</b> has registered a new account on {{ $site }}.
<p>A new user has registered on <strong>{{ $site }}</strong>.</p>
<div class="info-box">
<strong>👤 New User:</strong> {{ $username }}
</div>
<p>This is an automated notification. No action is required unless you need to review the new registration.</p>
<div class="signature">
<p>Best regards,</p>
<p><strong>The {{ $site }} System</strong></p>
</div>
@endsection
+22 -6
View File
@@ -1,13 +1,29 @@
@extends('emails.email_layout')
@section('title')
Forgotten Password
Password Reset Successful
@endsection
@section('site_name', $site)
@section('content')
Dear {{ $userName }},
<br>
Your password has been reset to: {{ $newPass }}
<br><br><br>
Greetings from {{ $site }}
<p class="greeting">Dear {{ $userName }},</p>
<p>Your password has been successfully reset.</p>
<div class="info-box">
<strong>🔑 Your New Password:</strong>
<div style="margin-top: 10px; font-family: monospace; font-size: 18px; letter-spacing: 2px;">{{ $newPass }}</div>
</div>
<div class="warning-box">
<strong>🔒 Security Recommendation:</strong> For your security, we strongly recommend changing this password to something memorable after logging in.
</div>
<p>If you did not request this password reset, please contact us immediately.</p>
<div class="signature">
<p>Best regards,</p>
<p><strong>The {{ $site }} Team</strong></p>
</div>
@endsection
+24 -8
View File
@@ -1,15 +1,31 @@
@extends('emails.email_layout')
@section('title')
You have received an invite
You've Been Invited!
@endsection
@section('site_name', $site)
@section('content')
Dear {{ $email }},
<br>
you have received an invite from {{ $username }} to register on {{ $site }}
<br>
To register click on following link: <a href="{{$invite}}">{{$invite}}</a><br>
<br><br><br>
Greetings from {{ $site }}
<p class="greeting">Hello {{ $email }},</p>
<p>Great news! <strong>{{ $username }}</strong> has invited you to join <strong>{{ $site }}</strong>.</p>
<div style="text-align: center;">
<a href="{{ $invite }}" class="button">Accept Invitation</a>
</div>
<p>Or copy and paste this link into your browser:</p>
<span class="link-text">{{ $invite }}</span>
<div class="info-box">
<strong>💡 What's Next?</strong> Click the button above to create your account and start exploring everything {{ $site }} has to offer.
</div>
<p>If you have any questions, feel free to reach out to us after registering.</p>
<div class="signature">
<p>Best regards,</p>
<p><strong>The {{ $site }} Team</strong></p>
</div>
@endsection
+16 -5
View File
@@ -4,10 +4,21 @@
Welcome to {{ $site }}
@endsection
@section('site_name', $site)
@section('content')
Dear {{ $username }},
<br>
Welcome to our site. Your account verification will be sent in separate email.
<br><br><br>
Greetings from {{ $site }}
<p class="greeting">Dear {{ $username }},</p>
<p>Welcome to <strong>{{ $site }}</strong>! We're thrilled to have you join our community.</p>
<div class="info-box">
<strong>📧 Next Step:</strong> Your account verification email will be sent separately. Please check your inbox and verify your email address to complete the registration process.
</div>
<p>If you have any questions or need assistance, don't hesitate to reach out to us.</p>
<div class="signature">
<p>Best regards,</p>
<p><strong>The {{ $site }} Team</strong></p>
</div>
@endsection