feat: Add new email templates for password reset, email verification, test, certificate notifications, and inquiry replies, along with a new application logo.

This commit is contained in:
dyzulk
2025-12-31 10:19:43 +07:00
parent 42fa9b75ff
commit 37948c4682
7 changed files with 298 additions and 105 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

View File

@@ -1,17 +1,88 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Certificate Expired Alert</title> <title>Certificate Expired Alert</title>
<style>
body {
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
line-height: 1.5;
color: #374151;
margin: 0;
padding: 0;
background-color: #f9fafb;
}
.container {
max-width: 600px;
margin: 40px auto;
background-color: #ffffff;
border-radius: 12px;
overflow: hidden;
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
}
.header {
padding: 30px 40px;
background-color: #fef2f2;
text-align: center;
}
.header img {
height: 32px;
margin-bottom: 15px;
}
.content {
padding: 40px;
}
.title {
font-size: 24px;
font-weight: 700;
color: #991b1b;
margin-bottom: 20px;
}
.details {
background-color: #fef2f2;
padding: 20px;
border-radius: 8px;
margin: 25px 0;
border: 1px solid #fee2e2;
}
.details p {
margin: 5px 0;
font-size: 14px;
}
.footer {
padding: 30px 40px;
background-color: #f9fafb;
text-align: center;
font-size: 12px;
color: #6b7280;
border-top: 1px solid #e5e7eb;
}
.button {
display: inline-block;
padding: 12px 24px;
background-color: #dc2626;
color: #ffffff;
text-decoration: none;
border-radius: 6px;
font-weight: 600;
margin-top: 10px;
}
</style>
</head> </head>
<body style="font-family: Arial, sans-serif; line-height: 1.6; color: #333;"> <body>
<div style="max-width: 600px; margin: 0 auto; padding: 20px;"> <div class="container">
<h2 style="color: #a94442;">URGENT: Certificate Has Expired</h2> <div class="header">
<img src="{{ url('/images/logo/logo-outlined.png') }}" alt="TrustLab Logo">
</div>
<div class="content">
<h1 class="title">URGENT: Certificate Has Expired</h1>
<p>Hello {{ $certificate->user->first_name ?? 'User' }},</p> <p>Hello {{ $certificate->user->first_name ?? 'User' }},</p>
<p>This is a critical notification that your SSL certificate has <strong>ALREADY EXPIRED</strong>.</p> <p>This is a critical notification that your SSL certificate has <strong>ALREADY EXPIRED</strong>.</p>
<div style="background-color: #fee; padding: 15px; border-radius: 5px; margin: 20px 0; border: 1px solid #ebccd1;"> <div class="details">
<p><strong>Common Name:</strong> {{ $certificate->common_name }}</p> <p><strong>Common Name:</strong> {{ $certificate->common_name }}</p>
<p><strong>Organization:</strong> {{ $certificate->organization }}</p> <p><strong>Organization:</strong> {{ $certificate->organization }}</p>
<p><strong>Key Strength:</strong> {{ $certificate->key_bits }}-bit</p> <p><strong>Key Strength:</strong> {{ $certificate->key_bits }}-bit</p>
@@ -20,7 +91,12 @@
<p>Your services using this certificate may be inaccessible or showing security warnings. Please renew immediately.</p> <p>Your services using this certificate may be inaccessible or showing security warnings. Please renew immediately.</p>
<a href="{{ config('app.frontend_url', 'http://localhost:3000') }}/dashboard" style="display: inline-block; padding: 10px 20px; background-color: #d9534f; color: white; text-decoration: none; border-radius: 5px;">Renew Now</a> <a href="{{ config('app.frontend_url', 'http://localhost:3000') }}/dashboard" class="button">Renew Now</a>
</div>
<div class="footer">
<p>&copy; {{ date('Y') }} TrustLab. All rights reserved.</p>
<p>This is an automated system message. Please do not reply to this email.</p>
</div>
</div> </div>
</body> </body>
</html> </html>

View File

@@ -1,17 +1,94 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Certificate Expiration Alert</title> <title>Certificate Expiration Alert</title>
<style>
body {
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
line-height: 1.5;
color: #374151;
margin: 0;
padding: 0;
background-color: #f9fafb;
}
.container {
max-width: 600px;
margin: 40px auto;
background-color: #ffffff;
border-radius: 12px;
overflow: hidden;
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
}
.header {
padding: 30px 40px;
background-color: #fffbeb;
text-align: center;
}
.header img {
height: 32px;
margin-bottom: 15px;
}
.content {
padding: 40px;
}
.title {
font-size: 24px;
font-weight: 700;
color: #92400e;
margin-bottom: 20px;
}
.details {
background-color: #f9f9f9;
padding: 20px;
border-radius: 8px;
margin: 25px 0;
border: 1px solid #e5e7eb;
}
.details p {
margin: 5px 0;
font-size: 14px;
}
.footer {
padding: 30px 40px;
background-color: #f9fafb;
text-align: center;
font-size: 12px;
color: #6b7280;
border-top: 1px solid #e5e7eb;
}
.button {
display: inline-block;
padding: 12px 24px;
background-color: #3b82f6;
color: #ffffff;
text-decoration: none;
border-radius: 6px;
font-weight: 600;
margin-top: 10px;
}
.note {
margin-top: 30px;
font-size: 12px;
color: #777;
font-style: italic;
}
</style>
</head> </head>
<body style="font-family: Arial, sans-serif; line-height: 1.6; color: #333;"> <body>
<div style="max-width: 600px; margin: 0 auto; padding: 20px;"> <div class="container">
<h2 style="color: #d9534f;">Action Required: Certificate Expiring Soon</h2> <div class="header">
<img src="{{ url('/images/logo/logo-outlined.png') }}" alt="TrustLab Logo">
</div>
<div class="content">
<h1 class="title">Action Required: Certificate Expiring Soon</h1>
<p>Hello {{ $certificate->user->first_name ?? 'User' }},</p> <p>Hello {{ $certificate->user->first_name ?? 'User' }},</p>
<p>This is a notification that one of your SSL certificates is expiring in <strong>{{ $daysRemaining }} days</strong>.</p> <p>This is a notification that one of your SSL certificates is expiring in <strong>{{ $daysRemaining }} days</strong>.</p>
<div style="background-color: #f9f9f9; padding: 15px; border-radius: 5px; margin: 20px 0;"> <div class="details">
<p><strong>Common Name:</strong> {{ $certificate->common_name }}</p> <p><strong>Common Name:</strong> {{ $certificate->common_name }}</p>
<p><strong>Organization:</strong> {{ $certificate->organization }}</p> <p><strong>Organization:</strong> {{ $certificate->organization }}</p>
<p><strong>Key Strength:</strong> {{ $certificate->key_bits }}-bit</p> <p><strong>Key Strength:</strong> {{ $certificate->key_bits }}-bit</p>
@@ -20,12 +97,17 @@
<p>Please log in to your dashboard to renew this certificate before it expires to ensure uninterrupted service.</p> <p>Please log in to your dashboard to renew this certificate before it expires to ensure uninterrupted service.</p>
<a href="{{ config('app.frontend_url', 'http://localhost:3000') }}/dashboard" style="display: inline-block; padding: 10px 20px; background-color: #007bff; color: white; text-decoration: none; border-radius: 5px;">Go to Dashboard</a> <a href="{{ config('app.frontend_url', 'http://localhost:3000') }}/dashboard" class="button">Go to Dashboard</a>
<p style="margin-top: 30px; font-size: 12px; color: #777;"> <p class="note">
If you have already renewed this certificate, please ignore this message.<br> If you have already renewed this certificate, please ignore this message.<br>
You are receiving this email because you have enabled certificate renewal alerts in your account settings. You are receiving this email because you have enabled certificate renewal alerts in your account settings.
</p> </p>
</div> </div>
<div class="footer">
<p>&copy; {{ date('Y') }} TrustLab. All rights reserved.</p>
<p>This is an automated system message. Please do not reply to this email.</p>
</div>
</div>
</body> </body>
</html> </html>

View File

@@ -2,10 +2,12 @@
<html> <html>
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>TrustLab Support Inquiry Reply</title>
<style> <style>
body { body {
font-family: 'Inter', system-ui, -apple-system, sans-serif; font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
line-height: 1.6; line-height: 1.5;
color: #374151; color: #374151;
margin: 0; margin: 0;
padding: 0; padding: 0;
@@ -14,21 +16,24 @@
.container { .container {
max-width: 600px; max-width: 600px;
margin: 40px auto; margin: 40px auto;
background: #ffffff; background-color: #ffffff;
border-radius: 16px; border-radius: 12px;
overflow: hidden; overflow: hidden;
box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1); box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
border: 1px solid #e5e7eb;
} }
.header { .header {
padding: 30px 40px;
background-color: #111827; background-color: #111827;
padding: 32px;
text-align: center; text-align: center;
} }
.header img {
height: 32px;
margin-bottom: 5px;
}
.header h1 { .header h1 {
color: #ffffff; color: #ffffff;
margin: 0; margin: 10px 0 0 0;
font-size: 24px; font-size: 20px;
font-weight: 700; font-weight: 700;
} }
.content { .content {
@@ -38,15 +43,18 @@
background-color: #f3f4f6; background-color: #f3f4f6;
border-radius: 12px; border-radius: 12px;
padding: 24px; padding: 24px;
margin-bottom: 32px; margin: 25px 0;
border-left: 4px solid #3b82f6; border-left: 4px solid #3b82f6;
font-size: 15px;
color: #1f2937;
} }
.footer { .footer {
padding: 32px; padding: 30px 40px;
background-color: #f9fafb;
text-align: center; text-align: center;
font-size: 14px; font-size: 12px;
color: #6b7280; color: #6b7280;
border-top: 1px solid #f3f4f6; border-top: 1px solid #e5e7eb;
} }
.original-message { .original-message {
margin-top: 40px; margin-top: 40px;
@@ -60,16 +68,19 @@
<body> <body>
<div class="container"> <div class="container">
<div class="header"> <div class="header">
<h1>TrustLab Support</h1> <img src="{{ url('/images/logo/logo-outlined.png') }}" alt="TrustLab Logo">
<h1>Support Reply</h1>
</div> </div>
<div class="content"> <div class="content">
<p>Hello {{ $inquiry->name }},</p> <p>Hello {{ $inquiry->name }},</p>
<p>Thank you for contacting TrustLab. Our team has reviewed your inquiry and has the following response:</p>
<div class="reply-box"> <div class="reply-box">
{!! nl2br(e($replyMessage)) !!} {!! nl2br(e($replyMessage)) !!}
</div> </div>
<p>Best regards,<br>The TrustLab Team</p> <p>Best regards,<br><strong>The TrustLab Team</strong></p>
<div class="original-message"> <div class="original-message">
<p><strong>Original Message:</strong></p> <p><strong>Original Message:</strong></p>
@@ -77,7 +88,8 @@
</div> </div>
</div> </div>
<div class="footer"> <div class="footer">
&copy; {{ date('Y') }} TrustLab. All rights reserved. <p>&copy; {{ date('Y') }} TrustLab. All rights reserved.</p>
<p>This is an automated system message. Please do not reply to this email.</p>
</div> </div>
</div> </div>
</body> </body>

View File

@@ -2,10 +2,12 @@
<html> <html>
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Reset Your Password</title>
<style> <style>
body { body {
font-family: 'Inter', system-ui, -apple-system, sans-serif; font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
line-height: 1.6; line-height: 1.5;
color: #374151; color: #374151;
margin: 0; margin: 0;
padding: 0; padding: 0;
@@ -14,65 +16,71 @@
.container { .container {
max-width: 600px; max-width: 600px;
margin: 40px auto; margin: 40px auto;
background: #ffffff; background-color: #ffffff;
border-radius: 16px; border-radius: 12px;
overflow: hidden; overflow: hidden;
box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1); box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
border: 1px solid #e5e7eb;
} }
.header { .header {
background-color: #111827; padding: 30px 40px;
padding: 32px; background-color: #eff6ff;
text-align: center; text-align: center;
} }
.header h1 { .header img {
color: #ffffff; height: 32px;
margin: 0; margin-bottom: 15px;
font-size: 24px;
font-weight: 700;
} }
.content { .content {
padding: 40px; padding: 40px;
text-align: center; text-align: center;
} }
.content p { .title {
margin-bottom: 24px; font-size: 24px;
font-weight: 700;
color: #111827;
margin-bottom: 20px;
} }
.btn { .footer {
padding: 30px 40px;
background-color: #f9fafb;
text-align: center;
font-size: 12px;
color: #6b7280;
border-top: 1px solid #e5e7eb;
}
.button {
display: inline-block; display: inline-block;
padding: 12px 32px; padding: 12px 32px;
background-color: #465fff; background-color: #3b82f6;
color: #ffffff !important; color: #ffffff !important;
text-decoration: none; text-decoration: none;
border-radius: 8px; border-radius: 8px;
font-weight: 600; font-weight: 600;
margin-bottom: 32px; margin: 25px 0;
}
.footer {
padding: 32px;
text-align: center;
font-size: 14px;
color: #6b7280;
border-top: 1px solid #f3f4f6;
} }
.sub-link { .sub-link {
font-size: 12px; font-size: 12px;
color: #9ca3af; color: #9ca3af;
word-break: break-all; word-break: break-all;
margin-top: 30px;
padding-top: 20px;
border-top: 1px solid #f3f4f6;
} }
</style> </style>
</head> </head>
<body> <body>
<div class="container"> <div class="container">
<div class="header"> <div class="header">
<h1>Reset Your Password</h1> <img src="{{ url('/images/logo/logo-outlined.png') }}" alt="TrustLab Logo">
</div> </div>
<div class="content"> <div class="content">
<h1 class="title">Reset Your Password</h1>
<p>Hello {{ $name }},</p> <p>Hello {{ $name }},</p>
<p>You are receiving this email because we received a password reset request for your TrustLab account.</p> <p>You are receiving this email because we received a password reset request for your TrustLab account.</p>
<a href="{{ $url }}" class="btn">Reset Password</a> <a href="{{ $url }}" class="button">Reset Password</a>
<p>This password reset link will expire in 60 minutes.</p> <p>This password reset link will expire in 60 minutes.</p>
<p>If you did not request a password reset, no further action is required.</p> <p>If you did not request a password reset, no further action is required.</p>
@@ -83,7 +91,8 @@
</div> </div>
</div> </div>
<div class="footer"> <div class="footer">
&copy; {{ date('Y') }} TrustLab. All rights reserved. <p>&copy; {{ date('Y') }} TrustLab. All rights reserved.</p>
<p>This is an automated system message. Please do not reply to this email.</p>
</div> </div>
</div> </div>
</body> </body>

View File

@@ -83,7 +83,7 @@
<div class="container"> <div class="container">
<div class="header"> <div class="header">
<!-- Using CID for embedding logo or absolute URL if accessible --> <!-- Using CID for embedding logo or absolute URL if accessible -->
<img src="{{ url('/images/logo/logo.png') }}" alt="TrustLab Logo"> <img src="{{ url('/images/logo/logo-outlined.png') }}" alt="TrustLab Logo">
</div> </div>
<div class="content"> <div class="content">
<h1 class="title">SMTP Connection Test</h1> <h1 class="title">SMTP Connection Test</h1>

View File

@@ -2,10 +2,12 @@
<html> <html>
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>TrustLab Email Verification</title>
<style> <style>
body { body {
font-family: 'Inter', system-ui, -apple-system, sans-serif; font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
line-height: 1.6; line-height: 1.5;
color: #374151; color: #374151;
margin: 0; margin: 0;
padding: 0; padding: 0;
@@ -14,17 +16,20 @@
.container { .container {
max-width: 600px; max-width: 600px;
margin: 40px auto; margin: 40px auto;
background: #ffffff; background-color: #ffffff;
border-radius: 16px; border-radius: 12px;
overflow: hidden; overflow: hidden;
box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1); box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
border: 1px solid #e5e7eb;
} }
.header { .header {
padding: 30px 40px;
background-color: #111827; background-color: #111827;
padding: 32px;
text-align: center; text-align: center;
} }
.header img {
height: 32px;
margin-bottom: 15px;
}
.header h1 { .header h1 {
color: #ffffff; color: #ffffff;
margin: 0; margin: 0;
@@ -35,10 +40,21 @@
padding: 40px; padding: 40px;
text-align: center; text-align: center;
} }
.content p { .title {
margin-bottom: 24px; font-size: 24px;
font-weight: 700;
color: #111827;
margin-bottom: 20px;
} }
.btn { .footer {
padding: 30px 40px;
background-color: #f9fafb;
text-align: center;
font-size: 12px;
color: #6b7280;
border-top: 1px solid #e5e7eb;
}
.button {
display: inline-block; display: inline-block;
padding: 12px 32px; padding: 12px 32px;
background-color: #465fff; background-color: #465fff;
@@ -46,33 +62,30 @@
text-decoration: none; text-decoration: none;
border-radius: 8px; border-radius: 8px;
font-weight: 600; font-weight: 600;
margin-bottom: 32px; margin: 25px 0;
}
.footer {
padding: 32px;
text-align: center;
font-size: 14px;
color: #6b7280;
border-top: 1px solid #f3f4f6;
} }
.sub-link { .sub-link {
font-size: 12px; font-size: 12px;
color: #9ca3af; color: #9ca3af;
word-break: break-all; word-break: break-all;
margin-top: 30px;
padding-top: 20px;
border-top: 1px solid #f3f4f6;
} }
</style> </style>
</head> </head>
<body> <body>
<div class="container"> <div class="container">
<div class="header"> <div class="header">
<h1>TrustLab Verification</h1> <img src="{{ url('/images/logo/logo-outlined.png') }}" alt="TrustLab Logo">
<h1>Email Verification</h1>
</div> </div>
<div class="content"> <div class="content">
<p>Hello {{ $name }},</p> <p>Hello {{ $name }},</p>
<p>Thank you for joining TrustLab! Before you can start managing your certificates and API keys, we need you to verify your email address.</p> <p>Thank you for joining TrustLab! Before you can start managing your certificates and API keys, we need you to verify your email address.</p>
<a href="{{ $url }}" class="btn">Verify Email Address</a> <a href="{{ $url }}" class="button">Verify Email Address</a>
<p>If you did not create an account, no further action is required.</p> <p>If you did not create an account, no further action is required.</p>
@@ -82,7 +95,8 @@
</div> </div>
</div> </div>
<div class="footer"> <div class="footer">
&copy; {{ date('Y') }} TrustLab. All rights reserved. <p>&copy; {{ date('Y') }} TrustLab. All rights reserved.</p>
<p>This is an automated system message. Please do not reply to this email.</p>
</div> </div>
</div> </div>
</body> </body>