Merge pull request 'email templates fix' (#2) from ameenah into dev
Reviewed-on: https://gitea.maskantech.in/gitea_admin/docqube_backend/pulls/2
This commit is contained in:
+8
-1
@@ -44,7 +44,14 @@ def send_email(
|
||||
if template_name and template_context is not None and jinja_env:
|
||||
try:
|
||||
template = jinja_env.get_template(template_name)
|
||||
html_body = template.render(**template_context)
|
||||
# asset_base_url is injected for every template so image URLs follow
|
||||
# the deployed frontend instead of being hardcoded. A call site can
|
||||
# override it by passing its own value in template_context.
|
||||
context = {
|
||||
"asset_base_url": settings.EMAIL_ASSET_BASE_URL,
|
||||
**template_context,
|
||||
}
|
||||
html_body = template.render(**context)
|
||||
if not body:
|
||||
body = f"Please view this email in an HTML-compatible client. Subject: {subject}"
|
||||
except Exception as e:
|
||||
|
||||
@@ -196,6 +196,17 @@ class Settings(BaseSettings):
|
||||
|
||||
FRONTEND_URL: str = "http://localhost:5173"
|
||||
|
||||
@property
|
||||
def EMAIL_ASSET_BASE_URL(self) -> str:
|
||||
"""Origin serving the email images in docqube_frontend/public/email/.
|
||||
|
||||
These are frontend static assets, so they hang off FRONTEND_URL rather
|
||||
than the API. FRONTEND_URL is a comma-separated list in some
|
||||
environments (see .env.test), so take the first entry.
|
||||
"""
|
||||
base = self.FRONTEND_URL.split(",")[0].strip().rstrip("/")
|
||||
return f"{base}/email"
|
||||
|
||||
LOG_LEVEL: str
|
||||
|
||||
CORS_ORIGINS: str
|
||||
|
||||
@@ -1,54 +1,672 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml"
|
||||
xmlns:o="urn:schemas-microsoft-com:office:office">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Document Shared with You</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="x-apple-disable-message-reformatting">
|
||||
<title>A Document is Ready for You</title>
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Albert+Sans:wght@400;500;600;700;800&display=swap"
|
||||
rel="stylesheet">
|
||||
<!--[if mso]>
|
||||
<noscript>
|
||||
<xml>
|
||||
<o:OfficeDocumentSettings>
|
||||
<o:PixelsPerInch>96</o:PixelsPerInch>
|
||||
</o:OfficeDocumentSettings>
|
||||
</xml>
|
||||
</noscript>
|
||||
<![endif]-->
|
||||
<style>
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
width: 100% !important;
|
||||
-webkit-text-size-adjust: 100%;
|
||||
-ms-text-size-adjust: 100%;
|
||||
font-family: 'Albert Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
|
||||
background-color: #FFFFFF;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
mso-table-lspace: 0pt;
|
||||
mso-table-rspace: 0pt;
|
||||
}
|
||||
|
||||
td {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
img {
|
||||
border: 0;
|
||||
outline: none;
|
||||
text-decoration: none;
|
||||
-ms-interpolation-mode: bicubic;
|
||||
}
|
||||
|
||||
a {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 600px) {
|
||||
.email-main-card {
|
||||
width: 100% !important;
|
||||
border-radius: 24px !important;
|
||||
}
|
||||
|
||||
.header-section {
|
||||
padding: 24px 18px 24px 18px !important;
|
||||
border-top-left-radius: 24px !important;
|
||||
border-top-right-radius: 24px !important;
|
||||
}
|
||||
|
||||
.content-section {
|
||||
padding: 24px 16px 30px 16px !important;
|
||||
}
|
||||
|
||||
.feature-col {
|
||||
display: block !important;
|
||||
width: 100% !important;
|
||||
border-bottom: 1px solid #E7EFFF !important;
|
||||
padding: 16px 8px !important;
|
||||
}
|
||||
|
||||
.feature-col:last-child {
|
||||
border-bottom: none !important;
|
||||
}
|
||||
|
||||
.feature-divider {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.footer-row {
|
||||
display: block !important;
|
||||
width: 100% !important;
|
||||
text-align: center !important;
|
||||
}
|
||||
|
||||
.footer-brand-left,
|
||||
.footer-brand-right {
|
||||
display: block !important;
|
||||
width: 100% !important;
|
||||
text-align: center !important;
|
||||
margin-bottom: 14px !important;
|
||||
padding: 0 !important;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; background-color: #ffffff; color: #333333; margin: 0; padding: 0; line-height: 1.6;">
|
||||
<div style="max-width: 600px; margin: 0 auto; padding: 40px 20px;">
|
||||
<div style="text-align: center; margin-bottom: 30px;">
|
||||
<h1 style="color: #2563EB; margin: 0; font-size: 28px; font-weight: 700;">DocQube</h1>
|
||||
</div>
|
||||
|
||||
<div style="background-color: #ffffff; border: 1px solid #e5e7eb; border-radius: 12px; padding: 40px; box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);">
|
||||
<h2 style="color: #111827; margin-top: 0; font-size: 22px; font-weight: 600;">A document has been shared with you</h2>
|
||||
<body style="background-color: #FFFFFF; margin: 0; padding: 36px 12px; -webkit-font-smoothing: antialiased;">
|
||||
<center style="width: 100%;">
|
||||
<table role="presentation" class="email-main-card" width="600" align="center"
|
||||
style="max-width: 600px; width: 100%; background-color: #FFFFFF; border-radius: 40px; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.02); overflow: hidden; margin: 0 auto; border: 1px solid #E2E8F0; border-collapse: separate; border-spacing: 0;">
|
||||
|
||||
<p style="color: #4b5563; font-size: 16px;">
|
||||
Hello {{ recipient_name }},
|
||||
</p>
|
||||
<!-- Header -->
|
||||
<tr>
|
||||
<td class="header-section" align="center" bgcolor="#F3F6FD"
|
||||
style="background-color: #F3F6FD; border-top-left-radius: 40px; border-top-right-radius: 40px; padding: 36px 30px 29px 30px; text-align: center;">
|
||||
|
||||
<p style="color: #4b5563; font-size: 16px;">
|
||||
<strong style="color: #111827;">{{ sharer_name }}</strong> shared
|
||||
<strong style="color: #111827;">{{ document_name }}</strong> with you on DocQube.
|
||||
</p>
|
||||
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0">
|
||||
|
||||
<div style="margin: 24px 0; padding: 16px 18px; background-color: #f8fafc; border: 1px solid #e5e7eb; border-radius: 10px;">
|
||||
<p style="margin: 0; color: #374151; font-size: 15px;">
|
||||
Access level: <strong style="color: #111827;">{{ permission }}</strong>
|
||||
</p>
|
||||
</div>
|
||||
<tr>
|
||||
<td align="center" style="text-align: center;">
|
||||
<img src="{{ asset_base_url }}/LogoDocqube.png" width="125" height="26"
|
||||
alt="DocQube"
|
||||
style="display: block; margin: 0 auto; border: 0; outline: none; text-decoration: none; max-width: 100%; height: auto;">
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<p style="color: #4b5563; font-size: 16px;">
|
||||
Use the button below to open the shared document. If you are not signed in yet, DocQube will ask you to log in first.
|
||||
</p>
|
||||
<tr>
|
||||
<td height="34"
|
||||
style="height: 34px; font-size: 0; line-height: 0; mso-line-height-rule: exactly;">
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<div style="text-align: center; margin: 35px 0;">
|
||||
<a href="{{ document_url }}" style="background-color: #2563EB; color: #ffffff; padding: 14px 28px; text-decoration: none; border-radius: 6px; font-weight: 500; font-size: 16px; display: inline-block;">Open Shared Document</a>
|
||||
</div>
|
||||
<tr>
|
||||
<td align="center" style="text-align: center;">
|
||||
<img src="{{ asset_base_url }}/HeroEnvelope.png" width="270" height="152"
|
||||
alt="A document is ready for you"
|
||||
style="display: block; margin: 0 auto; border: 0; outline: none; text-decoration: none; max-width: 100%; height: auto;">
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<p style="color: #4b5563; font-size: 16px;">
|
||||
If you were not expecting this share, you can safely ignore this email.
|
||||
</p>
|
||||
<tr>
|
||||
<td height="15"
|
||||
style="height: 15px; font-size: 0; line-height: 0; mso-line-height-rule: exactly;">
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<p style="color: #4b5563; font-size: 16px; margin-bottom: 0;">
|
||||
Best regards,<br>
|
||||
<strong style="color: #2563EB;">The DocQube Team</strong>
|
||||
</p>
|
||||
</div>
|
||||
<tr>
|
||||
<td align="center" style="text-align: center;">
|
||||
<h1
|
||||
style="margin: 0; padding: 0; color: #000000; font-family: 'Albert Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; font-size: 28px; font-weight: 600; line-height: 100%; mso-line-height-rule: exactly; letter-spacing: 0;">
|
||||
A Document is Ready for You</h1>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<div style="text-align: center; margin-top: 30px; color: #9ca3af; font-size: 13px;">
|
||||
<p style="margin: 0;">© {{ year }} DocQube. All rights reserved.</p>
|
||||
</div>
|
||||
</div>
|
||||
<tr>
|
||||
<td height="13"
|
||||
style="height: 13px; font-size: 0; line-height: 0; mso-line-height-rule: exactly;">
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td align="center"
|
||||
style="text-align: center; font-family: 'Albert Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: 600; line-height: 20px; mso-line-height-rule: exactly; letter-spacing: 0; color: #000000;">
|
||||
<img src="{{ asset_base_url }}/UserCircle.png" width="20" height="20" alt=""
|
||||
style="vertical-align: middle; border: 0; outline: none; text-decoration: none;"> <span
|
||||
style="color: #4949E6;">{{ sharer_name }}</span> has shared a document with you
|
||||
securely
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<!-- Content Section: quote card, file card, CTA, trust row, footer -->
|
||||
<tr>
|
||||
<td class="content-section" style="padding: 36px 30px 30px 30px;">
|
||||
|
||||
<!-- Quote Card -->
|
||||
<!-- border-collapse: separate is required: under the global collapse rule a td's
|
||||
border-radius rounds its background but not its border, leaving white corner wedges -->
|
||||
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0"
|
||||
style="border-collapse: separate; border-spacing: 0;">
|
||||
<tr>
|
||||
<td bgcolor="#FFFFFF"
|
||||
style="background-color: #FFFFFF; background-image: url('{{ asset_base_url }}/LogoWatermark.png'); background-repeat: no-repeat; background-position: right bottom; background-size: 92px 83px; border: 2px solid #ECEDFD; border-radius: 24px; padding: 16px 24px 20px 16px;">
|
||||
|
||||
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0">
|
||||
<tr>
|
||||
|
||||
<td width="16" height="32" valign="top"
|
||||
style="width: 16px; height: 32px; vertical-align: top; padding: 0 10px 0 0; font-family: 'Albert Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; font-size: 32px; font-weight: 700; line-height: 32px; mso-line-height-rule: exactly; letter-spacing: 0; color: #4949E6;">
|
||||
“</td>
|
||||
|
||||
<td valign="top" style="vertical-align: top;">
|
||||
<table role="presentation" width="100%" cellpadding="0" cellspacing="0"
|
||||
border="0">
|
||||
|
||||
<tr>
|
||||
<td
|
||||
style="font-family: 'Albert Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; font-size: 14px; font-weight: 400; line-height: 22px; mso-line-height-rule: exactly; letter-spacing: 0; color: #242844;">
|
||||
Hi there,</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td
|
||||
style="font-family: 'Albert Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; font-size: 14px; font-weight: 400; line-height: 22px; mso-line-height-rule: exactly; letter-spacing: 0; color: #242844;">
|
||||
Please review the document we’ve shared with
|
||||
you.<br>We appreciate your time.<br>Thank you!</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td
|
||||
style="font-family: 'Albert Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; font-size: 14px; font-weight: 600; line-height: 22px; mso-line-height-rule: exactly; letter-spacing: 0; color: #4949E6;">
|
||||
— {{ sharer_name }}</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<!-- File Card -->
|
||||
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0"
|
||||
style="border-collapse: separate; border-spacing: 0;">
|
||||
|
||||
<tr>
|
||||
<td height="18"
|
||||
style="height: 18px; font-size: 0; line-height: 0; mso-line-height-rule: exactly;">
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td bgcolor="#F1F1FD"
|
||||
style="background-color: #F1F1FD; background-image: linear-gradient(342.55deg, rgba(255, 255, 255, 0.1) 0%, rgba(65, 78, 231, 0.1) 100%); background-repeat: no-repeat; border-radius: 16px; padding: 16px 20px;">
|
||||
|
||||
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0">
|
||||
<tr>
|
||||
|
||||
<td width="52" valign="middle"
|
||||
style="width: 52px; vertical-align: middle; padding: 0 22px 0 0; font-size: 0; line-height: 0;">
|
||||
<img src="{{ asset_base_url }}/FilePdf.png" width="36" height="36"
|
||||
alt="PDF"
|
||||
style="display: block; border: 0; outline: none; text-decoration: none; max-width: 100%;">
|
||||
</td>
|
||||
|
||||
<td valign="middle" style="vertical-align: middle;">
|
||||
<table role="presentation" width="100%" cellpadding="0" cellspacing="0"
|
||||
border="0">
|
||||
|
||||
<tr>
|
||||
<td
|
||||
style="font-family: 'Albert Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; font-size: 15px; font-weight: 700; line-height: 19px; mso-line-height-rule: exactly; letter-spacing: 0; color: #171A3A; word-break: break-word;">
|
||||
{{ document_name }}</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td height="5"
|
||||
style="height: 5px; font-size: 0; line-height: 0; mso-line-height-rule: exactly;">
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td
|
||||
style="font-family: 'Albert Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; font-size: 13px; font-weight: 400; line-height: 16px; mso-line-height-rule: exactly; letter-spacing: 0; color: #686D80;">
|
||||
{%- set _ext = document_name.rsplit('.', 1)[1] | upper if document_name and '.' in document_name else '' -%}
|
||||
{{ _ext ~ ' Document' if _ext else 'Document' }}</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
<!-- CTA -->
|
||||
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0">
|
||||
|
||||
<tr>
|
||||
<td height="32"
|
||||
style="height: 32px; font-size: 0; line-height: 0; mso-line-height-rule: exactly;">
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td align="center" style="text-align: center;">
|
||||
<!--[if mso]>
|
||||
<v:roundrect xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w="urn:schemas-microsoft-com:office:word" href="{{ document_url | default('#') }}" style="height:33px;v-text-anchor:middle;width:140px;" arcsize="24%" stroke="f" fillcolor="#4949E6">
|
||||
<w:anchorlock/>
|
||||
<center style="color:#FFFFFF;font-family:'Albert Sans', Helvetica, Arial, sans-serif;font-size:14px;font-weight:bold;">Open Document</center>
|
||||
</v:roundrect>
|
||||
<![endif]-->
|
||||
<!--[if !mso]><!-- -->
|
||||
<table role="presentation" cellpadding="0" cellspacing="0" border="0" align="center">
|
||||
<tr>
|
||||
<td align="center" bgcolor="#4949E6"
|
||||
style="background-color: #4949E6; border-radius: 8px;">
|
||||
<a href="{{ document_url | default('#') }}"
|
||||
style="display: inline-block; padding: 8px 16px; font-family: 'Albert Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; font-size: 14px; font-weight: 700; line-height: 17px; mso-line-height-rule: exactly; letter-spacing: 0; color: #FFFFFF; text-decoration: none; border-radius: 8px;">Open
|
||||
Document</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<!--<![endif]-->
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
<!-- Privacy Card -->
|
||||
<!-- border-collapse: separate is required: under the global collapse rule a td's
|
||||
border-radius rounds its background but not its border, leaving white corner wedges -->
|
||||
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0"
|
||||
style="border-collapse: separate; border-spacing: 0;">
|
||||
|
||||
<tr>
|
||||
<td height="36"
|
||||
style="height: 36px; font-size: 0; line-height: 0; mso-line-height-rule: exactly;">
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td bgcolor="#F2FEF2"
|
||||
style="background-color: #F2FEF2; background-image: linear-gradient(342.55deg, rgba(255, 255, 255, 0.14) 0.87%, rgba(65, 231, 65, 0.14) 98.42%); background-repeat: no-repeat; border: 2px solid #E9FCE5; border-radius: 16px;">
|
||||
|
||||
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0">
|
||||
<tr>
|
||||
|
||||
<td width="74" valign="middle"
|
||||
style="vertical-align: middle; padding: 14px 0 14px 18px;">
|
||||
<img src="{{ asset_base_url }}/LogoSecure.png" width="56" height="51"
|
||||
alt=""
|
||||
style="display: block; border: 0; outline: none; text-decoration: none; max-width: 100%;">
|
||||
</td>
|
||||
|
||||
<td valign="middle" style="vertical-align: middle; padding: 14px 18px 14px 15px;">
|
||||
<table role="presentation" width="100%" cellpadding="0" cellspacing="0"
|
||||
border="0">
|
||||
|
||||
<tr>
|
||||
<td
|
||||
style="font-family: 'Albert Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: 700; line-height: 19px; mso-line-height-rule: exactly; letter-spacing: 0; color: #171A3A;">
|
||||
Your privacy matters</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td height="6"
|
||||
style="height: 6px; font-size: 0; line-height: 0; mso-line-height-rule: exactly;">
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td
|
||||
style="font-family: 'Albert Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; font-size: 12px; font-weight: 400; line-height: 16px; mso-line-height-rule: exactly; letter-spacing: 0; color: #74798D;">
|
||||
This document is securely sent to you and intended only for the
|
||||
recipient.</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
<!-- Trust Row -->
|
||||
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0">
|
||||
|
||||
<tr>
|
||||
<td height="44"
|
||||
style="height: 44px; font-size: 0; line-height: 0; mso-line-height-rule: exactly;">
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0">
|
||||
<tr>
|
||||
|
||||
<td class="feature-col" width="33%" align="center" valign="top"
|
||||
style="vertical-align: top; text-align: center;">
|
||||
<table role="presentation" width="100%" cellpadding="0" cellspacing="0"
|
||||
border="0">
|
||||
<tr>
|
||||
<td height="9"
|
||||
style="height: 9px; font-size: 0; line-height: 0; mso-line-height-rule: exactly;">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" style="text-align: center;">
|
||||
<img src="{{ asset_base_url }}/LogoDelivery.png"
|
||||
width="59" height="44" alt=""
|
||||
style="display: block; margin: 0 auto; border: 0; outline: none; text-decoration: none; border-radius: 4px; max-width: 100%;">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="11"
|
||||
style="height: 11px; font-size: 0; line-height: 0; mso-line-height-rule: exactly;">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"
|
||||
style="text-align: center; font-family: 'Albert Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; font-size: 15px; font-weight: 700; line-height: 18px; mso-line-height-rule: exactly; letter-spacing: 0; color: #171A3A;">
|
||||
Secure Delivery</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="7"
|
||||
style="height: 7px; font-size: 0; line-height: 0; mso-line-height-rule: exactly;">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" style="text-align: center;">
|
||||
<table role="presentation" width="150" align="center"
|
||||
cellpadding="0" cellspacing="0" border="0">
|
||||
<tr>
|
||||
<td align="center"
|
||||
style="text-align: center; font-family: 'Albert Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; font-size: 13px; font-weight: 400; line-height: 16px; mso-line-height-rule: exactly; letter-spacing: 0; color: #686D80;">
|
||||
Encrypted and safe file transfer</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="5"
|
||||
style="height: 5px; font-size: 0; line-height: 0; mso-line-height-rule: exactly;">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
<td class="feature-divider" width="1" valign="middle"
|
||||
style="vertical-align: middle;">
|
||||
<table role="presentation" width="1" cellpadding="0" cellspacing="0"
|
||||
border="0">
|
||||
<tr>
|
||||
<td width="1" height="102" bgcolor="#E7EFFF"
|
||||
style="width: 1px; height: 102px; background-color: #E7EFFF; font-size: 0; line-height: 0; mso-line-height-rule: exactly;">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
<td class="feature-col" width="33%" align="center" valign="top"
|
||||
style="vertical-align: top; text-align: center;">
|
||||
<table role="presentation" width="100%" cellpadding="0" cellspacing="0"
|
||||
border="0">
|
||||
<tr>
|
||||
<td height="9"
|
||||
style="height: 9px; font-size: 0; line-height: 0; mso-line-height-rule: exactly;">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" style="text-align: center;">
|
||||
<img src="{{ asset_base_url }}/LogoAccess.png"
|
||||
width="59" height="44" alt=""
|
||||
style="display: block; margin: 0 auto; border: 0; outline: none; text-decoration: none; border-radius: 4px; max-width: 100%;">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="11"
|
||||
style="height: 11px; font-size: 0; line-height: 0; mso-line-height-rule: exactly;">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"
|
||||
style="text-align: center; font-family: 'Albert Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; font-size: 15px; font-weight: 700; line-height: 18px; mso-line-height-rule: exactly; letter-spacing: 0; color: #171A3A;">
|
||||
Always Accessible</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="7"
|
||||
style="height: 7px; font-size: 0; line-height: 0; mso-line-height-rule: exactly;">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" style="text-align: center;">
|
||||
<table role="presentation" width="150" align="center"
|
||||
cellpadding="0" cellspacing="0" border="0">
|
||||
<tr>
|
||||
<td align="center"
|
||||
style="text-align: center; font-family: 'Albert Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; font-size: 13px; font-weight: 400; line-height: 16px; mso-line-height-rule: exactly; letter-spacing: 0; color: #686D80;">
|
||||
Access your documents anytime, anywhere</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="5"
|
||||
style="height: 5px; font-size: 0; line-height: 0; mso-line-height-rule: exactly;">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
<td class="feature-divider" width="1" valign="middle"
|
||||
style="vertical-align: middle;">
|
||||
<table role="presentation" width="1" cellpadding="0" cellspacing="0"
|
||||
border="0">
|
||||
<tr>
|
||||
<td width="1" height="102" bgcolor="#E7EFFF"
|
||||
style="width: 1px; height: 102px; background-color: #E7EFFF; font-size: 0; line-height: 0; mso-line-height-rule: exactly;">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
<td class="feature-col" width="33%" align="center" valign="top"
|
||||
style="vertical-align: top; text-align: center;">
|
||||
<table role="presentation" width="100%" cellpadding="0" cellspacing="0"
|
||||
border="0">
|
||||
<tr>
|
||||
<td height="9"
|
||||
style="height: 9px; font-size: 0; line-height: 0; mso-line-height-rule: exactly;">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" style="text-align: center;">
|
||||
<img src="{{ asset_base_url }}/LogoTrusted.png" width="59"
|
||||
height="44" alt=""
|
||||
style="display: block; margin: 0 auto; border: 0; outline: none; text-decoration: none; border-radius: 4px; max-width: 100%;">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="11"
|
||||
style="height: 11px; font-size: 0; line-height: 0; mso-line-height-rule: exactly;">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"
|
||||
style="text-align: center; font-family: 'Albert Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; font-size: 15px; font-weight: 700; line-height: 18px; mso-line-height-rule: exactly; letter-spacing: 0; color: #171A3A;">
|
||||
Trusted Platform</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="7"
|
||||
style="height: 7px; font-size: 0; line-height: 0; mso-line-height-rule: exactly;">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" style="text-align: center;">
|
||||
<table role="presentation" width="150" align="center"
|
||||
cellpadding="0" cellspacing="0" border="0">
|
||||
<tr>
|
||||
<td align="center"
|
||||
style="text-align: center; font-family: 'Albert Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; font-size: 13px; font-weight: 400; line-height: 16px; mso-line-height-rule: exactly; letter-spacing: 0; color: #686D80;">
|
||||
Reliable. Professional. DocQube.</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="5"
|
||||
style="height: 5px; font-size: 0; line-height: 0; mso-line-height-rule: exactly;">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td height="40"
|
||||
style="height: 40px; font-size: 0; line-height: 0; mso-line-height-rule: exactly;">
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
<!-- Footer -->
|
||||
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0">
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0">
|
||||
<tr>
|
||||
<td height="1" bgcolor="#E7EFFF"
|
||||
style="height: 1px; background-color: #E7EFFF; font-size: 0; line-height: 0; mso-line-height-rule: exactly;">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td height="18"
|
||||
style="height: 18px; font-size: 0; line-height: 0; mso-line-height-rule: exactly;">
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0">
|
||||
<tr class="footer-row">
|
||||
|
||||
<td class="footer-brand-left" align="left" valign="middle"
|
||||
style="vertical-align: middle; text-align: left; padding: 0 0 0 14px; font-size: 0; line-height: 0;">
|
||||
<img src="{{ asset_base_url }}/LogoDocqube.png" width="125"
|
||||
height="26" alt="DocQube"
|
||||
style="vertical-align: middle; border: 0; outline: none; text-decoration: none; max-width: 100%;">
|
||||
</td>
|
||||
|
||||
<td class="footer-brand-right" align="right" valign="middle"
|
||||
style="vertical-align: middle; text-align: right; padding: 0 15px 0 0; font-size: 0; line-height: 0;">
|
||||
<img src="{{ asset_base_url }}/LogoMaskan.png" width="121" height="30"
|
||||
alt="Maskan Technologies"
|
||||
style="vertical-align: middle; border: 0; outline: none; text-decoration: none; max-width: 100%;">
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td height="20"
|
||||
style="height: 20px; font-size: 0; line-height: 0; mso-line-height-rule: exactly;">
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<table role="presentation" width="74%" align="center" style="width: 74.3%;"
|
||||
cellpadding="0" cellspacing="0" border="0">
|
||||
<tr>
|
||||
<td height="1" bgcolor="#E7EFFF"
|
||||
style="height: 1px; background-color: #E7EFFF; font-size: 0; line-height: 0; mso-line-height-rule: exactly;">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td height="11"
|
||||
style="height: 11px; font-size: 0; line-height: 0; mso-line-height-rule: exactly;">
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td align="center"
|
||||
style="text-align: center; font-family: 'Albert Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; font-size: 12px; font-weight: 400; line-height: 14px; mso-line-height-rule: exactly; letter-spacing: 0; color: #A8ACCD;">
|
||||
© {{ year | default('2026') }} DocQube. All rights reserved.<br>
|
||||
If you weren't expecting this email, you can safely ignore it.</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</center>
|
||||
</body>
|
||||
</html>
|
||||
</html>
|
||||
+562
-391
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user