Skip to content

Commit

Permalink
feat: added proper email templating
Browse files Browse the repository at this point in the history
  • Loading branch information
sheikhshack committed Jan 26, 2022
1 parent c255dea commit 3a4c75e
Show file tree
Hide file tree
Showing 5 changed files with 278 additions and 6 deletions.
1 change: 1 addition & 0 deletions backend/.eslintignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
build
coverage
**/templates/**
1 change: 1 addition & 0 deletions backend/.eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ module.exports = {
rules: {
'no-console': 'warn',
'@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_' }],
'@typescript-eslint/ban-ts-comment': 'off',
'@typescript-eslint/member-delimiter-style': [
'error',
{
Expand Down
12 changes: 7 additions & 5 deletions backend/src/applications/applications.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,13 @@ export class ApplicationsController {
}

// TODO: Consider fire and forget
await this.mailService.sendMail({
subject: sendEmailToApplicantDto.subject,
text: sendEmailToApplicantDto.content,
to: applicantEmail,
})
await this.mailService.sendMail(
{
subject: sendEmailToApplicantDto.subject,
to: applicantEmail,
},
sendEmailToApplicantDto.content
)

return {
status: 'success',
Expand Down
12 changes: 11 additions & 1 deletion backend/src/mailer/mailer.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { Logger } from '@nestjs/common'
import nodemailer, { SendMailOptions, Transporter } from 'nodemailer'

import { ConfigService } from '../config/config.service'
import { htmlString } from './templates/standard'

@Injectable()
export class MailerService {
Expand All @@ -27,8 +28,17 @@ export class MailerService {
}

sendMail = async (
mailOptions: Omit<SendMailOptions, 'from'>
mailOptions: Omit<SendMailOptions, 'from'>,
message?: string
): Promise<void> => {
if (message) {
return this.mailer.sendMail({
from: this.config.get('mailConfig.temporarySender'),
to: mailOptions.to,
html: htmlString(message),
})
}

return this.mailer.sendMail({
...mailOptions,
from: this.config.get('mailConfig.temporarySender'),
Expand Down
258 changes: 258 additions & 0 deletions backend/src/mailer/templates/standard.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,258 @@
// @ts-nocheck
// tslint:disable

export const htmlString = (message: string) => `
<!DOCTYPE html>
<html lang="en" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:v="urn:schemas-microsoft-com:vml">
<head>
<title></title>
<meta charset="utf-8"/>
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
<!--[if mso]><xml><o:OfficeDocumentSettings><o:PixelsPerInch>96</o:PixelsPerInch><o:AllowPNG/></o:OfficeDocumentSettings></xml><![endif]-->
<!--[if !mso]><!-->
<link href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet" type="text/css"/>
<link href="https://fonts.googleapis.com/css?family=Cabin" rel="stylesheet" type="text/css"/>
<!--<![endif]-->
<style>
* {
box-sizing: border-box;
}
body {
margin: 0;
padding: 0;
}
a[x-apple-data-detectors] {
color: inherit !important;
text-decoration: inherit !important;
}
#MessageViewBody a {
color: inherit;
text-decoration: none;
}
p {
line-height: inherit
}
@media (max-width:620px) {
.icons-inner {
text-align: center;
}
.icons-inner td {
margin: 0 auto;
}
.row-content {
width: 100% !important;
}
.image_block img.big {
width: auto !important;
}
.stack .column {
width: 100%;
display: block;
}
}
</style>
</head>
<body style="background-color: #d9dffa; margin: 0; padding: 0; -webkit-text-size-adjust: none; text-size-adjust: none;">
<table border="0" cellpadding="0" cellspacing="0" class="nl-container" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; background-color: #d9dffa;" width="100%">
<tbody>
<tr>
<td>
<table align="center" border="0" cellpadding="0" cellspacing="0" class="row row-1" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; background-color: #cfd6f4;" width="100%">
<tbody>
<tr>
<td>
<table align="center" border="0" cellpadding="0" cellspacing="0" class="row-content stack" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; color: #000000; width: 600px;" width="600">
<tbody>
<tr>
<td class="column" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; font-weight: 400; text-align: left; vertical-align: top; padding-top: 20px; padding-bottom: 0px; border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px;" width="100%">
<table border="0" cellpadding="0" cellspacing="0" class="empty_block" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt;" width="100%">
<tr>
<td>
<div></div>
</td>
</tr>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<table align="center" border="0" cellpadding="0" cellspacing="0" class="row row-2" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; background-color: #d9dffa; background-image: url('https://doculens-public-resources.s3.ap-southeast-1.amazonaws.com/body_background_2.png?response-content-disposition=inline&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEH4aDmFwLXNvdXRoZWFzdC0xIkgwRgIhAI%2Bek3iK28DdNciWyNpiDbwdv0dPM8xVXRlW0Ce%2B0aNXAiEA08HkNkJfFZPD9jcOfg8fx4ukumQsnNOUnleomf6qzEQq8AMIp%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FARAAGgw0MjE4NzYwMTk0NjUiDKFdkIzhO2L2ytl9LyrEA%2BUrileFQruQ4Se3eZJziuEBvmZrYe7TNKvswlqjMRcg%2BbenpWTM91j7GKpe%2BEAwZ3aLe3q4We9PjnV9kTE7Zmji4YZim%2BbpBN9vcrr%2BtLo2GD6WigvPAkQn4tR2q0JbmElFExMtww1xwHNeRVXRZeTo4PXVg4yy7%2BEWKXrRUTORc06DaH6h4QTutDTUjMiKN%2Bh6X5r9D1LQO3ZK72U2Kx8U0f77CX1MZce2rxQgmk1I5B4GiooRYSNSfbciAx8SrhZ9%2BNk4cjcpSgGV%2BasoPw97kFmFnidhl0N%2Forjyyci%2Bb8drXCa9Gzs7nhiYRj4QZLO3LxwfSxogBnJGhBOnPywOPi4Mku4KMoNMDIJ3Y9KYgEH8fn2yOoZXsRhEMcYrcGde%2BJ5H7mBJSdILnah3LPNIEUdkWLTF8%2FMO%2FZVXQ57rEeZIB8RQZTfFVTEU0sQe6FEJflyUBwg4KqJe8WhQEBC3bLChyrcw63jrX92kqvAYjw3BNkson8nq2Y2MToY%2BvVlIEqg0FPhO4V4ZOhVr%2FeJKEHdsOQDNgEJcdhctHLvCFZL8Kk5YLp%2BmIZm69ijh%2Bt%2BKH6lfgT2PEbS%2FIv9LgHQn6GQyMNqSw48GOpMCaWV%2FyLmzyrbL5jm09L6talyD%2F%2F%2BixqRbjpTCIAPRJZYivcKQhLlRlQPwQ9GjvTQ%2BpRx4y5%2BQ%2FwUaYpPOANwHe6s473xCGfWRLyfN1Xtbtli8wYN1YEdEmuCjK4WFmCvzoe2loCEugzAwBhSJu5w3ICjGO%2BaQ2C8n5SI%2Fgb3SaAI%2FpZWbURxHSKeZfULDG9ot8Ihhpct6RCZnuim6WyOvHkmE6Aok5FeWcdFwzv%2FWnYIVfN0P%2FwLVI%2FS9a6kIqBMlL%2B6QAZDFgyppk6ljmDMUniKh3mea%2BqfF8dkvLyAHfbYajXhTerJVb7Tqx%2FCP1jAAWvSGuVAe%2FHq9c43Lw6%2BkpMbpba5HZ7NjR%2FK%2BIQAdC5gm6Yo%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220126T133902Z&X-Amz-SignedHeaders=host&X-Amz-Expires=300&X-Amz-Credential=ASIAWEOOFGEE54LIE2MC%2F20220126%2Fap-southeast-1%2Fs3%2Faws4_request&X-Amz-Signature=c7feb2749ab220f1c783329011fb8716011ea6ee0084b9e176a17a0a655138f7'); background-position: top center; background-repeat: repeat;" width="100%">
<tbody>
<tr>
<td>
<table align="center" border="0" cellpadding="0" cellspacing="0" class="row-content stack" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; color: #000000; width: 600px;" width="600">
<tbody>
<tr>
<td class="column" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; font-weight: 400; text-align: left; vertical-align: top; padding-left: 50px; padding-right: 50px; padding-top: 15px; padding-bottom: 15px; border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px;" width="100%">
<table border="0" cellpadding="10" cellspacing="0" class="text_block" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; word-break: break-word;" width="100%">
<tr>
<td>
<div style="font-family: sans-serif">
<div style="font-size: 14px; mso-line-height-alt: 16.8px; color: #3b4e9a; line-height: 1.2; font-family: Helvetica Neue, Helvetica, Arial, sans-serif;">
<p style="margin: 0; font-size: 14px;"><strong><span style="font-size:38px;">An update about your submission! </span></strong></p>
</div>
</div>
</td>
</tr>
</table>
<table border="0" cellpadding="10" cellspacing="0" class="text_block" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; word-break: break-word;" width="100%">
<tr>
<td>
<div style="font-family: sans-serif">
<div style="font-size: 14px; mso-line-height-alt: 16.8px; color: #40507a; line-height: 1.2; font-family: Helvetica Neue, Helvetica, Arial, sans-serif;">
<p style="margin: 0; font-size: 14px;"><span style="font-size:16px;">${message}</span></p>
</div>
</div>
</td>
</tr>
</table>
<table border="0" cellpadding="10" cellspacing="0" class="text_block" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; word-break: break-word;" width="100%">
<tr>
<td>
<div style="font-family: sans-serif">
<div style="font-size: 14px; mso-line-height-alt: 16.8px; color: #40507a; line-height: 1.2; font-family: Helvetica Neue, Helvetica, Arial, sans-serif;">
<p style="margin: 0; font-size: 14px;"><span style="font-size:16px;">Note that this is a staging demo!</span></p>
</div>
</div>
</td>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="button_block" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt;" width="100%">
<tr>
<td style="padding-bottom:20px;padding-left:10px;padding-right:10px;padding-top:20px;text-align:left;">
<!--[if mso]><v:roundrect xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w="urn:schemas-microsoft-com:office:word" href="http://www.example.com/" style="height:48px;width:203px;v-text-anchor:middle;" arcsize="34%" stroke="false" fillcolor="#4a61c0"><w:anchorlock/><v:textbox inset="5px,0px,0px,0px"><center style="color:#ffffff; font-family:Arial, sans-serif; font-size:15px"><![endif]--><a href="http://www.example.com/" style="text-decoration:none;display:inline-block;color:#ffffff;background-color:#4a61c0;border-radius:16px;width:auto;border-top:0px solid TRANSPARENT;border-right:0px solid TRANSPARENT;border-bottom:0px solid TRANSPARENT;border-left:0px solid TRANSPARENT;padding-top:8px;padding-bottom:8px;font-family:Helvetica Neue, Helvetica, Arial, sans-serif;text-align:center;mso-border-alt:none;word-break:keep-all;" target="_blank"><span style="padding-left:25px;padding-right:20px;font-size:15px;display:inline-block;letter-spacing:normal;"><span style="font-size: 16px; line-height: 2; word-break: break-word; mso-line-height-alt: 32px;"><span data-mce-style="font-size: 15px; line-height: 30px;" style="font-size: 15px; line-height: 30px;"><strong>Revisit My Application</strong></span></span></span></a>
<!--[if mso]></center></v:textbox></v:roundrect><![endif]-->
</td>
</tr>
</table>
<table border="0" cellpadding="10" cellspacing="0" class="text_block" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; word-break: break-word;" width="100%">
<tr>
<td>
<div style="font-family: sans-serif">
<div style="font-size: 14px; mso-line-height-alt: 16.8px; color: #40507a; line-height: 1.2; font-family: Helvetica Neue, Helvetica, Arial, sans-serif;">
<p style="margin: 0; font-size: 14px;"><span style="font-size:14px;">Having trouble? Contact us at [email protected]</span></p>
</div>
</div>
</td>
</tr>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<table align="center" border="0" cellpadding="0" cellspacing="0" class="row row-3" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt;" width="100%">
<tbody>
<tr>
<td>
<table align="center" border="0" cellpadding="0" cellspacing="0" class="row-content stack" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; color: #000000; width: 600px;" width="600">
<tbody>
<tr>
<td class="column" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; font-weight: 400; text-align: left; vertical-align: top; padding-top: 0px; padding-bottom: 5px; border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px;" width="100%">
<table border="0" cellpadding="0" cellspacing="0" class="image_block" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt;" width="100%">
<tr>
<td style="width:100%;padding-right:0px;padding-left:0px;">
<div align="center" style="line-height:10px"><img alt="Card Bottom with Border and Shadow Image" class="big" src="https://doculens-public-resources.s3.ap-southeast-1.amazonaws.com/bottom_img.png?response-content-disposition=inline&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEH4aDmFwLXNvdXRoZWFzdC0xIkgwRgIhAI%2Bek3iK28DdNciWyNpiDbwdv0dPM8xVXRlW0Ce%2B0aNXAiEA08HkNkJfFZPD9jcOfg8fx4ukumQsnNOUnleomf6qzEQq8AMIp%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FARAAGgw0MjE4NzYwMTk0NjUiDKFdkIzhO2L2ytl9LyrEA%2BUrileFQruQ4Se3eZJziuEBvmZrYe7TNKvswlqjMRcg%2BbenpWTM91j7GKpe%2BEAwZ3aLe3q4We9PjnV9kTE7Zmji4YZim%2BbpBN9vcrr%2BtLo2GD6WigvPAkQn4tR2q0JbmElFExMtww1xwHNeRVXRZeTo4PXVg4yy7%2BEWKXrRUTORc06DaH6h4QTutDTUjMiKN%2Bh6X5r9D1LQO3ZK72U2Kx8U0f77CX1MZce2rxQgmk1I5B4GiooRYSNSfbciAx8SrhZ9%2BNk4cjcpSgGV%2BasoPw97kFmFnidhl0N%2Forjyyci%2Bb8drXCa9Gzs7nhiYRj4QZLO3LxwfSxogBnJGhBOnPywOPi4Mku4KMoNMDIJ3Y9KYgEH8fn2yOoZXsRhEMcYrcGde%2BJ5H7mBJSdILnah3LPNIEUdkWLTF8%2FMO%2FZVXQ57rEeZIB8RQZTfFVTEU0sQe6FEJflyUBwg4KqJe8WhQEBC3bLChyrcw63jrX92kqvAYjw3BNkson8nq2Y2MToY%2BvVlIEqg0FPhO4V4ZOhVr%2FeJKEHdsOQDNgEJcdhctHLvCFZL8Kk5YLp%2BmIZm69ijh%2Bt%2BKH6lfgT2PEbS%2FIv9LgHQn6GQyMNqSw48GOpMCaWV%2FyLmzyrbL5jm09L6talyD%2F%2F%2BixqRbjpTCIAPRJZYivcKQhLlRlQPwQ9GjvTQ%2BpRx4y5%2BQ%2FwUaYpPOANwHe6s473xCGfWRLyfN1Xtbtli8wYN1YEdEmuCjK4WFmCvzoe2loCEugzAwBhSJu5w3ICjGO%2BaQ2C8n5SI%2Fgb3SaAI%2FpZWbURxHSKeZfULDG9ot8Ihhpct6RCZnuim6WyOvHkmE6Aok5FeWcdFwzv%2FWnYIVfN0P%2FwLVI%2FS9a6kIqBMlL%2B6QAZDFgyppk6ljmDMUniKh3mea%2BqfF8dkvLyAHfbYajXhTerJVb7Tqx%2FCP1jAAWvSGuVAe%2FHq9c43Lw6%2BkpMbpba5HZ7NjR%2FK%2BIQAdC5gm6Yo%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220126T134021Z&X-Amz-SignedHeaders=host&X-Amz-Expires=299&X-Amz-Credential=ASIAWEOOFGEE54LIE2MC%2F20220126%2Fap-southeast-1%2Fs3%2Faws4_request&X-Amz-Signature=ae10e880194b4900babac7da03849791efd6c816c5cfd73749838c5044b1be55" style="display: block; height: auto; border: 0; width: 600px; max-width: 100%;" title="Card Bottom with Border and Shadow Image" width="600"/></div>
</td>
</tr>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<table align="center" border="0" cellpadding="0" cellspacing="0" class="row row-4" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt;" width="100%">
<tbody>
<tr>
<td>
<table align="center" border="0" cellpadding="0" cellspacing="0" class="row-content stack" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; color: #000000; width: 600px;" width="600">
<tbody>
<tr>
<td class="column" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; font-weight: 400; text-align: left; vertical-align: top; padding-left: 10px; padding-right: 10px; padding-top: 10px; padding-bottom: 20px; border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px;" width="100%">
<table border="0" cellpadding="10" cellspacing="0" class="image_block" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt;" width="100%">
<tr>
<td>
<div align="center" style="line-height:10px"><a href="http://www.example.com/" style="outline:none" tabindex="-1" target="_blank"><img alt="Your Logo" src="https://doculens-public-resources.s3.ap-southeast-1.amazonaws.com/Doculens%20Logo.png?response-content-disposition=inline&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEH4aDmFwLXNvdXRoZWFzdC0xIkgwRgIhAI%2Bek3iK28DdNciWyNpiDbwdv0dPM8xVXRlW0Ce%2B0aNXAiEA08HkNkJfFZPD9jcOfg8fx4ukumQsnNOUnleomf6qzEQq8AMIp%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FARAAGgw0MjE4NzYwMTk0NjUiDKFdkIzhO2L2ytl9LyrEA%2BUrileFQruQ4Se3eZJziuEBvmZrYe7TNKvswlqjMRcg%2BbenpWTM91j7GKpe%2BEAwZ3aLe3q4We9PjnV9kTE7Zmji4YZim%2BbpBN9vcrr%2BtLo2GD6WigvPAkQn4tR2q0JbmElFExMtww1xwHNeRVXRZeTo4PXVg4yy7%2BEWKXrRUTORc06DaH6h4QTutDTUjMiKN%2Bh6X5r9D1LQO3ZK72U2Kx8U0f77CX1MZce2rxQgmk1I5B4GiooRYSNSfbciAx8SrhZ9%2BNk4cjcpSgGV%2BasoPw97kFmFnidhl0N%2Forjyyci%2Bb8drXCa9Gzs7nhiYRj4QZLO3LxwfSxogBnJGhBOnPywOPi4Mku4KMoNMDIJ3Y9KYgEH8fn2yOoZXsRhEMcYrcGde%2BJ5H7mBJSdILnah3LPNIEUdkWLTF8%2FMO%2FZVXQ57rEeZIB8RQZTfFVTEU0sQe6FEJflyUBwg4KqJe8WhQEBC3bLChyrcw63jrX92kqvAYjw3BNkson8nq2Y2MToY%2BvVlIEqg0FPhO4V4ZOhVr%2FeJKEHdsOQDNgEJcdhctHLvCFZL8Kk5YLp%2BmIZm69ijh%2Bt%2BKH6lfgT2PEbS%2FIv9LgHQn6GQyMNqSw48GOpMCaWV%2FyLmzyrbL5jm09L6talyD%2F%2F%2BixqRbjpTCIAPRJZYivcKQhLlRlQPwQ9GjvTQ%2BpRx4y5%2BQ%2FwUaYpPOANwHe6s473xCGfWRLyfN1Xtbtli8wYN1YEdEmuCjK4WFmCvzoe2loCEugzAwBhSJu5w3ICjGO%2BaQ2C8n5SI%2Fgb3SaAI%2FpZWbURxHSKeZfULDG9ot8Ihhpct6RCZnuim6WyOvHkmE6Aok5FeWcdFwzv%2FWnYIVfN0P%2FwLVI%2FS9a6kIqBMlL%2B6QAZDFgyppk6ljmDMUniKh3mea%2BqfF8dkvLyAHfbYajXhTerJVb7Tqx%2FCP1jAAWvSGuVAe%2FHq9c43Lw6%2BkpMbpba5HZ7NjR%2FK%2BIQAdC5gm6Yo%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220126T134208Z&X-Amz-SignedHeaders=host&X-Amz-Expires=300&X-Amz-Credential=ASIAWEOOFGEE54LIE2MC%2F20220126%2Fap-southeast-1%2Fs3%2Faws4_request&X-Amz-Signature=429c14457f7aabdd0681ddddd19fdd687b2c9c285826b14306afc9c92ff21458" style="display: block; height: auto; border: 0; width: 145px; max-width: 100%;" title="Your Logo" width="145"/></a></div>
</td>
</tr>
</table>
<table border="0" cellpadding="10" cellspacing="0" class="text_block" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; word-break: break-word;" width="100%">
<tr>
<td>
<div style="font-family: sans-serif">
<div style="font-size: 14px; mso-line-height-alt: 16.8px; color: #97a2da; line-height: 1.2; font-family: Helvetica Neue, Helvetica, Arial, sans-serif;">
<p style="margin: 0; text-align: center; font-size: 12px;"><span style="font-size:12px;">Copyright© 2022 Doculens SG.</span></p>
<p id="m_8010100107078456808text01" style="margin: 0; text-align: center; font-size: 12px;"><span style="font-size:12px;"><a href="http://www.example.com/" rel="noopener" style="text-decoration: underline; color: #97a2da;" target="_blank" title="Unsubscribe ">Unsubscribe</a> | <a href="http://www.example.com/" rel="noopener" style="text-decoration: underline; color: #97a2da;" target="_blank" title="Manage your preferences">Manage your preferences</a> | <a href="http://www.example.com/" rel="noopener" style="text-decoration: underline; color: #97a2da;" target="_blank" title="Privacy Policy">Privacy Policy</a></span></p>
</div>
</div>
</td>
</tr>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<table align="center" border="0" cellpadding="0" cellspacing="0" class="row row-5" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt;" width="100%">
<tbody>
<tr>
<td>
<table align="center" border="0" cellpadding="0" cellspacing="0" class="row-content stack" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; color: #000000; width: 600px;" width="600">
<tbody>
<tr>
<td class="column" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; font-weight: 400; text-align: left; vertical-align: top; padding-top: 5px; padding-bottom: 5px; border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px;" width="100%">
<table border="0" cellpadding="0" cellspacing="0" class="icons_block" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt;" width="100%">
<tr>
<td style="color:#9d9d9d;font-family:inherit;font-size:15px;padding-bottom:5px;padding-top:5px;text-align:center;">
<table cellpadding="0" cellspacing="0" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt;" width="100%">
<tr>
<td style="text-align:center;">
<!--[if vml]><table align="left" cellpadding="0" cellspacing="0" role="presentation" style="display:inline-block;padding-left:0px;padding-right:0px;mso-table-lspace: 0pt;mso-table-rspace: 0pt;"><![endif]-->
<!--[if !vml]><!-->
<table cellpadding="0" cellspacing="0" class="icons-inner" role="presentation" style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; display: inline-block; margin-right: -4px; padding-left: 0px; padding-right: 0px;">
<!--<![endif]-->
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table><!-- End -->
</body>
</html>
`

0 comments on commit 3a4c75e

Please sign in to comment.