Преглед изворни кода

feat: use env for name and domain text

poeti8 пре 6 година
родитељ
комит
3b2b0c0129

+ 1 - 1
client/components/Header.tsx

@@ -101,7 +101,7 @@ const Header: FC = () => {
             }}
             }}
           >
           >
             <img src="/images/logo.svg" alt="" />
             <img src="/images/logo.svg" alt="" />
-            Kutt.it
+            {process.env.SITE_NAME}
           </a>
           </a>
         </LogoImage>
         </LogoImage>
         {!isMobile && (
         {!isMobile && (

+ 2 - 1
client/components/Settings/SettingsDomain.tsx

@@ -71,7 +71,8 @@ const SettingsDomain: FC = () => {
       </H2>
       </H2>
       <Text mb={3}>
       <Text mb={3}>
         You can set a custom domain for your short URLs, so instead of{" "}
         You can set a custom domain for your short URLs, so instead of{" "}
-        <b>kutt.it/shorturl</b> you can have <b>example.com/shorturl.</b>
+        <b>{process.env.DEFAULT_DOMAIN}/shorturl</b> you can have{" "}
+        <b>example.com/shorturl.</b>
       </Text>
       </Text>
       <Text mb={4}>
       <Text mb={4}>
         Point your domain A record to <b>192.64.116.170</b> then add the domain
         Point your domain A record to <b>192.64.116.170</b> then add the domain

+ 3 - 1
client/pages/_app.tsx

@@ -73,7 +73,9 @@ class MyApp extends App<any> {
     return (
     return (
       <>
       <>
         <Head>
         <Head>
-          <title>Kutt.it | Modern Open Source URL shortener.</title>
+          <title>
+            {process.env.SITE_NAME} | Modern Open Source URL shortener.
+          </title>
         </Head>
         </Head>
         <StoreProvider store={this.store}>
         <StoreProvider store={this.store}>
           <Component {...pageProps} />
           <Component {...pageProps} />

+ 16 - 7
client/pages/_document.tsx

@@ -29,7 +29,7 @@ class AppDocument extends Document<Props> {
           />
           />
           <meta
           <meta
             name="description"
             name="description"
-            content="Kutt.it is a free and open source URL shortener with custom domains and stats."
+            content={`${process.env.SITE_NAME} is a free and open source URL shortener with custom domains and stats.`}
           />
           />
           <link
           <link
             href="https://fonts.googleapis.com/css?family=Nunito:300,400,700"
             href="https://fonts.googleapis.com/css?family=Nunito:300,400,700"
@@ -44,23 +44,32 @@ class AppDocument extends Document<Props> {
           <meta name="theme-color" content="#f3f3f3" />
           <meta name="theme-color" content="#f3f3f3" />
 
 
           <meta property="fb:app_id" content="123456789" />
           <meta property="fb:app_id" content="123456789" />
-          <meta property="og:url" content="https://kutt.it" />
+          <meta
+            property="og:url"
+            content={`https://${process.env.DEFAULT_DOMAIN}`}
+          />
           <meta property="og:type" content="website" />
           <meta property="og:type" content="website" />
-          <meta property="og:title" content="Kutt.it" />
-          <meta property="og:image" content="https://kutt.it/images/card.png" />
+          <meta property="og:title" content={process.env.SITE_NAME} />
+          <meta
+            property="og:image"
+            content={`https://${process.env.DEFAULT_DOMAIN}/images/card.png`}
+          />
           <meta
           <meta
             property="og:description"
             property="og:description"
             content="Free & Open Source Modern URL Shortener"
             content="Free & Open Source Modern URL Shortener"
           />
           />
-          <meta name="twitter:url" content="https://kutt.it" />
-          <meta name="twitter:title" content="Kutt.it" />
+          <meta
+            name="twitter:url"
+            content={`https://${process.env.DEFAULT_DOMAIN}`}
+          />
+          <meta name="twitter:title" content={process.env.SITE_NAME} />
           <meta
           <meta
             name="twitter:description"
             name="twitter:description"
             content="Free & Open Source Modern URL Shortener"
             content="Free & Open Source Modern URL Shortener"
           />
           />
           <meta
           <meta
             name="twitter:image"
             name="twitter:image"
-            content="https://kutt.it/images/card.png"
+            content={`https://${process.env.DEFAULT_DOMAIN}/images/card.png`}
           />
           />
 
 
           {this.props.styleTags}
           {this.props.styleTags}

+ 2 - 1
client/pages/banned.tsx

@@ -20,7 +20,8 @@ const BannedPage = () => {
           .
           .
         </H2>
         </H2>
         <H4 textAlign="center" normal>
         <H4 textAlign="center" normal>
-          If you noticed a malware/scam link shortened by Kutt,{" "}
+          If you noticed a malware/scam link shortened by{" "}
+          {process.env.SITE_NAME},{" "}
           <Link href="/report">
           <Link href="/report">
             <ALink title="Send report">send us a report</ALink>
             <ALink title="Send report">send us a report</ALink>
           </Link>
           </Link>

+ 1 - 1
client/pages/report.tsx

@@ -57,7 +57,7 @@ const ReportPage = () => {
         >
         >
           <TextInput
           <TextInput
             {...text("url")}
             {...text("url")}
-            placeholder="kutt.it/example"
+            placeholder={`${process.env.DEFAULT_DOMAIN}/example`}
             height={[44, 54]}
             height={[44, 54]}
             width={[1, 1 / 2]}
             width={[1, 1 / 2]}
             flex="0 0 auto"
             flex="0 0 auto"

+ 36 - 28
client/pages/terms.tsx

@@ -8,44 +8,52 @@ const TermsPage = () => (
   <AppWrapper>
   <AppWrapper>
     {/* TODO: better container */}
     {/* TODO: better container */}
     <Col width={600} maxWidth="97%" alignItems="flex-start">
     <Col width={600} maxWidth="97%" alignItems="flex-start">
-      <h3>Kutt Terms of Service</h3>
+      <h3>${process.env.SITE_NAME} Terms of Service</h3>
       <p>
       <p>
         By accessing the website at{" "}
         By accessing the website at{" "}
-        <a href="https://kutt.it">https://kutt.it</a>, you are agreeing to be
-        bound by these terms of service, all applicable laws and regulations,
-        and agree that you are responsible for compliance with any applicable
-        local laws. If you do not agree with any of these terms, you are
-        prohibited from using or accessing this site. The materials contained in
-        this website are protected by applicable copyright and trademark law.
+        <a href={`https://${process.env.DEFAULT_DOMAIN}`}>
+          https://{process.env.DEFAULT_DOMAIN}
+        </a>
+        , you are agreeing to be bound by these terms of service, all applicable
+        laws and regulations, and agree that you are responsible for compliance
+        with any applicable local laws. If you do not agree with any of these
+        terms, you are prohibited from using or accessing this site. The
+        materials contained in this website are protected by applicable
+        copyright and trademark law.
       </p>
       </p>
       <p>
       <p>
-        In no event shall Kutt or its suppliers be liable for any damages
-        (including, without limitation, damages for loss of data or profit, or
-        due to business interruption) arising out of the use or inability to use
-        the materials on {"Kutt's"} website, even if Kutt or a Kutt authorized
-        representative has been notified orally or in writing of the possibility
-        of such damage. Because some jurisdictions do not allow limitations on
-        implied warranties, or limitations of liability for consequential or
-        incidental damages, these limitations may not apply to you.
+        In no event shall ${process.env.SITE_NAME} or its suppliers be liable
+        for any damages (including, without limitation, damages for loss of data
+        or profit, or due to business interruption) arising out of the use or
+        inability to use the materials on {process.env.DEFAULT_DOMAIN} website,
+        even if ${process.env.SITE_NAME} or a ${process.env.SITE_NAME}{" "}
+        authorized representative has been notified orally or in writing of the
+        possibility of such damage. Because some jurisdictions do not allow
+        limitations on implied warranties, or limitations of liability for
+        consequential or incidental damages, these limitations may not apply to
+        you.
       </p>
       </p>
       <p>
       <p>
-        The materials appearing on Kutt website could include technical,
-        typographical, or photographic errors. Kutt does not warrant that any of
-        the materials on its website are accurate, complete or current. Kutt may
-        make changes to the materials contained on its website at any time
-        without notice. However Kutt does not make any commitment to update the
-        materials.
+        The materials appearing on ${process.env.SITE_NAME} website could
+        include technical, typographical, or photographic errors. $
+        {process.env.SITE_NAME} does not warrant that any of the materials on
+        its website are accurate, complete or current. ${process.env.SITE_NAME}{" "}
+        may make changes to the materials contained on its website at any time
+        without notice. However ${process.env.SITE_NAME} does not make any
+        commitment to update the materials.
       </p>
       </p>
       <p>
       <p>
-        Kutt has not reviewed all of the sites linked to its website and is not
-        responsible for the contents of any such linked site. The inclusion of
-        any link does not imply endorsement by Kutt of the site. Use of any such
-        linked website is at the {"user's"} own risk.
+        ${process.env.SITE_NAME} has not reviewed all of the sites linked to its
+        website and is not responsible for the contents of any such linked site.
+        The inclusion of any link does not imply endorsement by $
+        {process.env.SITE_NAME} of the site. Use of any such linked website is
+        at the {"user's"} own risk.
       </p>
       </p>
       <p>
       <p>
-        Kutt may revise these terms of service for its website at any time
-        without notice. By using this website you are agreeing to be bound by
-        the then current version of these terms of service.
+        ${process.env.SITE_NAME} may revise these terms of service for its
+        website at any time without notice. By using this website you are
+        agreeing to be bound by the then current version of these terms of
+        service.
       </p>
       </p>
     </Col>
     </Col>
   </AppWrapper>
   </AppWrapper>

+ 1 - 1
server/__v1/controllers/linkController.ts

@@ -346,7 +346,7 @@ export const reportLink: Handler = async (req, res) => {
   }
   }
 
 
   const mail = await transporter.sendMail({
   const mail = await transporter.sendMail({
-    from: env.MAIL_USER,
+    from: env.MAIL_FROM || env.MAIL_USER,
     to: env.REPORT_MAIL,
     to: env.REPORT_MAIL,
     subject: "[REPORT]",
     subject: "[REPORT]",
     text: req.body.link,
     text: req.body.link,

+ 1 - 1
server/handlers/links.ts

@@ -117,7 +117,7 @@ export const report: Handler = async (req, res) => {
   const { link } = req.body;
   const { link } = req.body;
 
 
   const mail = await transporter.sendMail({
   const mail = await transporter.sendMail({
-    from: env.MAIL_USER,
+    from: env.MAIL_FROM || env.MAIL_USER,
     to: env.REPORT_EMAIL,
     to: env.REPORT_EMAIL,
     subject: "[REPORT]",
     subject: "[REPORT]",
     text: link,
     text: link,

+ 13 - 11
server/mail/mail.ts

@@ -25,24 +25,26 @@ const resetEmailTemplatePath = path.join(__dirname, "template-reset.html");
 const verifyEmailTemplatePath = path.join(__dirname, "template-verify.html");
 const verifyEmailTemplatePath = path.join(__dirname, "template-verify.html");
 const resetEmailTemplate = fs
 const resetEmailTemplate = fs
   .readFileSync(resetEmailTemplatePath, { encoding: "utf-8" })
   .readFileSync(resetEmailTemplatePath, { encoding: "utf-8" })
-  .replace(/{{domain}}/gm, env.DEFAULT_DOMAIN);
+  .replace(/{{domain}}/gm, env.DEFAULT_DOMAIN)
+  .replace(/{{site_name}}/gm, env.SITE_NAME);
 const verifyEmailTemplate = fs
 const verifyEmailTemplate = fs
   .readFileSync(verifyEmailTemplatePath, { encoding: "utf-8" })
   .readFileSync(verifyEmailTemplatePath, { encoding: "utf-8" })
-  .replace(/{{domain}}/gm, env.DEFAULT_DOMAIN);
+  .replace(/{{domain}}/gm, env.DEFAULT_DOMAIN)
+  .replace(/{{site_name}}/gm, env.SITE_NAME);
 
 
 export const verification = async (user: User) => {
 export const verification = async (user: User) => {
   const mail = await transporter.sendMail({
   const mail = await transporter.sendMail({
     from: env.MAIL_FROM || env.MAIL_USER,
     from: env.MAIL_FROM || env.MAIL_USER,
     to: user.email,
     to: user.email,
     subject: "Verify your account",
     subject: "Verify your account",
-    text: verifyMailText.replace(
-      /{{verification}}/gim,
-      user.verification_token
-    ),
-    html: verifyEmailTemplate.replace(
-      /{{verification}}/gim,
-      user.verification_token
-    )
+    text: verifyMailText
+      .replace(/{{verification}}/gim, user.verification_token)
+      .replace(/{{domain}}/gm, env.DEFAULT_DOMAIN)
+      .replace(/{{site_name}}/gm, env.SITE_NAME),
+    html: verifyEmailTemplate
+      .replace(/{{verification}}/gim, user.verification_token)
+      .replace(/{{domain}}/gm, env.DEFAULT_DOMAIN)
+      .replace(/{{site_name}}/gm, env.SITE_NAME)
   });
   });
 
 
   if (!mail.accepted.length) {
   if (!mail.accepted.length) {
@@ -52,7 +54,7 @@ export const verification = async (user: User) => {
 
 
 export const resetPasswordToken = async (user: User) => {
 export const resetPasswordToken = async (user: User) => {
   const mail = await transporter.sendMail({
   const mail = await transporter.sendMail({
-    from: env.MAIL_USER,
+    from: env.MAIL_FROM || env.MAIL_USER,
     to: user.email,
     to: user.email,
     subject: "Reset your password",
     subject: "Reset your password",
     text: resetMailText
     text: resetMailText

+ 456 - 370
server/mail/template-reset.html

@@ -1,424 +1,510 @@
-<!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" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
-
-<head>
-  <!--[if gte mso 9]><xml>
-   <o:OfficeDocumentSettings>
-    <o:AllowPNG/>
-    <o:PixelsPerInch>96</o:PixelsPerInch>
-   </o:OfficeDocumentSettings>
-  </xml><![endif]-->
-  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-  <meta name="viewport" content="width=device-width">
-  <!--[if !mso]><!-->
-  <meta http-equiv="X-UA-Compatible" content="IE=edge">
-  <!--<![endif]-->
-  <title></title>
-
-
-  <style type="text/css" id="media-query">
-    body {
-      margin: 0;
-      padding: 0;
-    }
-
-    table,
-    tr,
-    td {
-      vertical-align: top;
-      border-collapse: collapse;
-    }
-
-    .ie-browser table,
-    .mso-container table {
-      table-layout: fixed;
-    }
-
-    * {
-      line-height: inherit;
-    }
-
-    a[x-apple-data-detectors=true] {
-      color: inherit !important;
-      text-decoration: none !important;
-    }
-
-    [owa] .img-container div,
-    [owa] .img-container button {
-      display: block !important;
-    }
-
-    [owa] .fullwidth button {
-      width: 100% !important;
-    }
-
-    [owa] .block-grid .col {
-      display: table-cell;
-      float: none !important;
-      vertical-align: top;
-    }
-
-    .ie-browser .num12,
-    .ie-browser .block-grid,
-    [owa] .num12,
-    [owa] .block-grid {
-      width: 500px !important;
-    }
-
-    .ExternalClass,
-    .ExternalClass p,
-    .ExternalClass span,
-    .ExternalClass font,
-    .ExternalClass td,
-    .ExternalClass div {
-      line-height: 100%;
-    }
-
-    .ie-browser .mixed-two-up .num4,
-    [owa] .mixed-two-up .num4 {
-      width: 164px !important;
-    }
-
-    .ie-browser .mixed-two-up .num8,
-    [owa] .mixed-two-up .num8 {
-      width: 328px !important;
-    }
-
-    .ie-browser .block-grid.two-up .col,
-    [owa] .block-grid.two-up .col {
-      width: 250px !important;
-    }
-
-    .ie-browser .block-grid.three-up .col,
-    [owa] .block-grid.three-up .col {
-      width: 166px !important;
-    }
-
-    .ie-browser .block-grid.four-up .col,
-    [owa] .block-grid.four-up .col {
-      width: 125px !important;
-    }
-
-    .ie-browser .block-grid.five-up .col,
-    [owa] .block-grid.five-up .col {
-      width: 100px !important;
-    }
-
-    .ie-browser .block-grid.six-up .col,
-    [owa] .block-grid.six-up .col {
-      width: 83px !important;
-    }
-
-    .ie-browser .block-grid.seven-up .col,
-    [owa] .block-grid.seven-up .col {
-      width: 71px !important;
-    }
-
-    .ie-browser .block-grid.eight-up .col,
-    [owa] .block-grid.eight-up .col {
-      width: 62px !important;
-    }
-
-    .ie-browser .block-grid.nine-up .col,
-    [owa] .block-grid.nine-up .col {
-      width: 55px !important;
-    }
-
-    .ie-browser .block-grid.ten-up .col,
-    [owa] .block-grid.ten-up .col {
-      width: 50px !important;
-    }
-
-    .ie-browser .block-grid.eleven-up .col,
-    [owa] .block-grid.eleven-up .col {
-      width: 45px !important;
-    }
-
-    .ie-browser .block-grid.twelve-up .col,
-    [owa] .block-grid.twelve-up .col {
-      width: 41px !important;
-    }
-
-    @media only screen and (min-width: 520px) {
-      .block-grid {
-        width: 500px !important;
+<!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"
+  xmlns:v="urn:schemas-microsoft-com:vml"
+  xmlns:o="urn:schemas-microsoft-com:office:office"
+>
+  <head>
+    <!--[if gte mso 9
+      ]><xml>
+        <o:OfficeDocumentSettings>
+          <o:AllowPNG />
+          <o:PixelsPerInch>96</o:PixelsPerInch>
+        </o:OfficeDocumentSettings>
+      </xml><!
+    [endif]-->
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <meta name="viewport" content="width=device-width" />
+    <!--[if !mso]><!-->
+    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+    <!--<![endif]-->
+    <title></title>
+
+    <style type="text/css" id="media-query">
+      body {
+        margin: 0;
+        padding: 0;
+      }
+
+      table,
+      tr,
+      td {
+        vertical-align: top;
+        border-collapse: collapse;
+      }
+
+      .ie-browser table,
+      .mso-container table {
+        table-layout: fixed;
+      }
+
+      * {
+        line-height: inherit;
+      }
+
+      a[x-apple-data-detectors="true"] {
+        color: inherit !important;
+        text-decoration: none !important;
+      }
+
+      [owa] .img-container div,
+      [owa] .img-container button {
+        display: block !important;
+      }
+
+      [owa] .fullwidth button {
+        width: 100% !important;
       }
       }
-      .block-grid .col {
+
+      [owa] .block-grid .col {
+        display: table-cell;
+        float: none !important;
         vertical-align: top;
         vertical-align: top;
       }
       }
-      .block-grid .col.num12 {
+
+      .ie-browser .num12,
+      .ie-browser .block-grid,
+      [owa] .num12,
+      [owa] .block-grid {
         width: 500px !important;
         width: 500px !important;
       }
       }
-      .block-grid.mixed-two-up .col.num4 {
+
+      .ExternalClass,
+      .ExternalClass p,
+      .ExternalClass span,
+      .ExternalClass font,
+      .ExternalClass td,
+      .ExternalClass div {
+        line-height: 100%;
+      }
+
+      .ie-browser .mixed-two-up .num4,
+      [owa] .mixed-two-up .num4 {
         width: 164px !important;
         width: 164px !important;
       }
       }
-      .block-grid.mixed-two-up .col.num8 {
+
+      .ie-browser .mixed-two-up .num8,
+      [owa] .mixed-two-up .num8 {
         width: 328px !important;
         width: 328px !important;
       }
       }
-      .block-grid.two-up .col {
+
+      .ie-browser .block-grid.two-up .col,
+      [owa] .block-grid.two-up .col {
         width: 250px !important;
         width: 250px !important;
       }
       }
-      .block-grid.three-up .col {
+
+      .ie-browser .block-grid.three-up .col,
+      [owa] .block-grid.three-up .col {
         width: 166px !important;
         width: 166px !important;
       }
       }
-      .block-grid.four-up .col {
+
+      .ie-browser .block-grid.four-up .col,
+      [owa] .block-grid.four-up .col {
         width: 125px !important;
         width: 125px !important;
       }
       }
-      .block-grid.five-up .col {
+
+      .ie-browser .block-grid.five-up .col,
+      [owa] .block-grid.five-up .col {
         width: 100px !important;
         width: 100px !important;
       }
       }
-      .block-grid.six-up .col {
+
+      .ie-browser .block-grid.six-up .col,
+      [owa] .block-grid.six-up .col {
         width: 83px !important;
         width: 83px !important;
       }
       }
-      .block-grid.seven-up .col {
+
+      .ie-browser .block-grid.seven-up .col,
+      [owa] .block-grid.seven-up .col {
         width: 71px !important;
         width: 71px !important;
       }
       }
-      .block-grid.eight-up .col {
+
+      .ie-browser .block-grid.eight-up .col,
+      [owa] .block-grid.eight-up .col {
         width: 62px !important;
         width: 62px !important;
       }
       }
-      .block-grid.nine-up .col {
-        width: 55px !important;
-      }
-      .block-grid.ten-up .col {
-        width: 50px !important;
-      }
-      .block-grid.eleven-up .col {
-        width: 45px !important;
-      }
-      .block-grid.twelve-up .col {
-        width: 41px !important;
-      }
-    }
 
 
-    @media (max-width: 520px) {
-      .block-grid,
-      .col {
-        min-width: 320px !important;
-        max-width: 100% !important;
-        display: block !important;
-      }
-      .block-grid {
-        width: calc(100% - 40px) !important;
-      }
-      .col {
-        width: 100% !important;
-      }
-      .col>div {
-        margin: 0 auto;
-      }
-      img.fullwidth,
-      img.fullwidthOnMobile {
-        max-width: 100% !important;
-      }
-      .no-stack .col {
-        min-width: 0 !important;
-        display: table-cell !important;
-      }
-      .no-stack.two-up .col {
-        width: 50% !important;
-      }
-      .no-stack.mixed-two-up .col.num4 {
-        width: 33% !important;
-      }
-      .no-stack.mixed-two-up .col.num8 {
-        width: 66% !important;
-      }
-      .no-stack.three-up .col.num4 {
-        width: 33% !important;
-      }
-      .no-stack.four-up .col.num3 {
-        width: 25% !important;
-      }
-    }
-  </style>
-</head>
-
-<body class="clean-body" style="margin: 0;padding: 0;-webkit-text-size-adjust: 100%;background-color: #FFFFFF">
-  <style type="text/css" id="media-query-bodytag">
-    @media (max-width: 520px) {
-      .block-grid {
-        min-width: 320px!important;
-        max-width: 100%!important;
-        width: 100%!important;
-        display: block!important;
+      .ie-browser .block-grid.nine-up .col,
+      [owa] .block-grid.nine-up .col {
+        width: 55px !important;
       }
       }
 
 
-      .col {
-        min-width: 320px!important;
-        max-width: 100%!important;
-        width: 100%!important;
-        display: block!important;
+      .ie-browser .block-grid.ten-up .col,
+      [owa] .block-grid.ten-up .col {
+        width: 50px !important;
       }
       }
 
 
-      .col>div {
-        margin: 0 auto;
+      .ie-browser .block-grid.eleven-up .col,
+      [owa] .block-grid.eleven-up .col {
+        width: 45px !important;
       }
       }
 
 
-      img.fullwidth {
-        max-width: 100%!important;
-      }
-      img.fullwidthOnMobile {
-        max-width: 100%!important;
-      }
-      .no-stack .col {
-        min-width: 0!important;
-        display: table-cell!important;
-      }
-      .no-stack.two-up .col {
-        width: 50%!important;
-      }
-      .no-stack.mixed-two-up .col.num4 {
-        width: 33%!important;
-      }
-      .no-stack.mixed-two-up .col.num8 {
-        width: 66%!important;
-      }
-      .no-stack.three-up .col.num4 {
-        width: 33%!important
-      }
-      .no-stack.four-up .col.num3 {
-        width: 25%!important
+      .ie-browser .block-grid.twelve-up .col,
+      [owa] .block-grid.twelve-up .col {
+        width: 41px !important;
       }
       }
-    }
-  </style>
-  <!--[if IE]><div class="ie-browser"><![endif]-->
-  <!--[if mso]><div class="mso-container"><![endif]-->
-  <table class="nl-container" style="border-collapse: collapse;table-layout: fixed;border-spacing: 0;mso-table-lspace: 0pt;mso-table-rspace: 0pt;vertical-align: top;min-width: 320px;Margin: 0 auto;background-color: #FFFFFF;width: 100%"
-    cellpadding="0" cellspacing="0">
-    <tbody>
-      <tr style="vertical-align: top">
-        <td style="word-break: break-word;border-collapse: collapse !important;vertical-align: top">
-          <!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td align="center" style="background-color: #FFFFFF;"><![endif]-->
-
-          <div style="background-color:#FFFFFF;">
-            <div style="Margin: 0 auto;min-width: 320px;max-width: 500px;overflow-wrap: break-word;word-wrap: break-word;word-break: break-word;background-color: #000000;"
-              class="block-grid ">
-              <div style="border-collapse: collapse;display: table;width: 100%;background-color:#000000;">
-                <!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="background-color:#FFFFFF;" align="center"><table cellpadding="0" cellspacing="0" border="0" style="width: 500px;"><tr class="layout-full-width" style="background-color:#000000;"><![endif]-->
-
-                <!--[if (mso)|(IE)]><td align="center" width="500" style="background-color:#FFFFFF; width:500px; padding-right: 0px; padding-left: 0px; padding-top:5px; padding-bottom:5px; border-top: 0px solid transparent; border-left: 0px solid transparent; border-bottom: 0px solid transparent; border-right: 0px solid transparent;" valign="top"><![endif]-->
-                <div class="col num12" style="min-width: 320px;max-width: 500px;display: table-cell;vertical-align: top;">
-                  <div style="background-color: #FFFFFF; width: 100% !important;">
-                    <!--[if (!mso)&(!IE)]><!-->
-                    <div style="border-top: 0px solid transparent; border-left: 0px solid transparent; border-bottom: 0px solid transparent; border-right: 0px solid transparent; padding-top:5px; padding-bottom:5px; padding-right: 0px; padding-left: 0px;">
-                      <!--<![endif]-->
 
 
-
-                      <!--[if mso]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding-right: 0px; padding-left: 30px; padding-top: 10px; padding-bottom: 10px;"><![endif]-->
-                      <div style="color:#000000;line-height:200%;font-family:'Trebuchet MS', 'Lucida Grande', 'Lucida Sans Unicode', 'Lucida Sans', Tahoma, sans-serif; padding-right: 0px; padding-left: 30px; padding-top: 10px; padding-bottom: 10px;">
-                        <div style="font-size:12px;line-height:24px;font-family:'Trebuchet MS', 'Lucida Grande', 'Lucida Sans Unicode', 'Lucida Sans', Tahoma, sans-serif;color:#000000;text-align:left;">
-                          <p style="margin: 0;font-size: 14px;line-height: 28px;text-align: left">
-                            <span style="color: rgb(0, 0, 0); font-size: 14px; line-height: 28px;">
-                              <strong>
-                                <span style="line-height: 56px; font-size: 28px;">
-                                  <span style="font-size: 24px; line-height: 48px;">Kutt</span>.</span>
-                              </strong>
-                              <span style="line-height: 56px; font-size: 28px;"></span>
-                            </span>
-                          </p>
+      @media only screen and (min-width: 520px) {
+        .block-grid {
+          width: 500px !important;
+        }
+        .block-grid .col {
+          vertical-align: top;
+        }
+        .block-grid .col.num12 {
+          width: 500px !important;
+        }
+        .block-grid.mixed-two-up .col.num4 {
+          width: 164px !important;
+        }
+        .block-grid.mixed-two-up .col.num8 {
+          width: 328px !important;
+        }
+        .block-grid.two-up .col {
+          width: 250px !important;
+        }
+        .block-grid.three-up .col {
+          width: 166px !important;
+        }
+        .block-grid.four-up .col {
+          width: 125px !important;
+        }
+        .block-grid.five-up .col {
+          width: 100px !important;
+        }
+        .block-grid.six-up .col {
+          width: 83px !important;
+        }
+        .block-grid.seven-up .col {
+          width: 71px !important;
+        }
+        .block-grid.eight-up .col {
+          width: 62px !important;
+        }
+        .block-grid.nine-up .col {
+          width: 55px !important;
+        }
+        .block-grid.ten-up .col {
+          width: 50px !important;
+        }
+        .block-grid.eleven-up .col {
+          width: 45px !important;
+        }
+        .block-grid.twelve-up .col {
+          width: 41px !important;
+        }
+      }
+
+      @media (max-width: 520px) {
+        .block-grid,
+        .col {
+          min-width: 320px !important;
+          max-width: 100% !important;
+          display: block !important;
+        }
+        .block-grid {
+          width: calc(100% - 40px) !important;
+        }
+        .col {
+          width: 100% !important;
+        }
+        .col > div {
+          margin: 0 auto;
+        }
+        img.fullwidth,
+        img.fullwidthOnMobile {
+          max-width: 100% !important;
+        }
+        .no-stack .col {
+          min-width: 0 !important;
+          display: table-cell !important;
+        }
+        .no-stack.two-up .col {
+          width: 50% !important;
+        }
+        .no-stack.mixed-two-up .col.num4 {
+          width: 33% !important;
+        }
+        .no-stack.mixed-two-up .col.num8 {
+          width: 66% !important;
+        }
+        .no-stack.three-up .col.num4 {
+          width: 33% !important;
+        }
+        .no-stack.four-up .col.num3 {
+          width: 25% !important;
+        }
+      }
+    </style>
+  </head>
+
+  <body
+    class="clean-body"
+    style="margin: 0;padding: 0;-webkit-text-size-adjust: 100%;background-color: #FFFFFF"
+  >
+    <style type="text/css" id="media-query-bodytag">
+      @media (max-width: 520px) {
+        .block-grid {
+          min-width: 320px !important;
+          max-width: 100% !important;
+          width: 100% !important;
+          display: block !important;
+        }
+
+        .col {
+          min-width: 320px !important;
+          max-width: 100% !important;
+          width: 100% !important;
+          display: block !important;
+        }
+
+        .col > div {
+          margin: 0 auto;
+        }
+
+        img.fullwidth {
+          max-width: 100% !important;
+        }
+        img.fullwidthOnMobile {
+          max-width: 100% !important;
+        }
+        .no-stack .col {
+          min-width: 0 !important;
+          display: table-cell !important;
+        }
+        .no-stack.two-up .col {
+          width: 50% !important;
+        }
+        .no-stack.mixed-two-up .col.num4 {
+          width: 33% !important;
+        }
+        .no-stack.mixed-two-up .col.num8 {
+          width: 66% !important;
+        }
+        .no-stack.three-up .col.num4 {
+          width: 33% !important;
+        }
+        .no-stack.four-up .col.num3 {
+          width: 25% !important;
+        }
+      }
+    </style>
+    <!--[if IE]><div class="ie-browser"><![endif]-->
+    <!--[if mso]><div class="mso-container"><![endif]-->
+    <table
+      class="nl-container"
+      style="border-collapse: collapse;table-layout: fixed;border-spacing: 0;mso-table-lspace: 0pt;mso-table-rspace: 0pt;vertical-align: top;min-width: 320px;Margin: 0 auto;background-color: #FFFFFF;width: 100%"
+      cellpadding="0"
+      cellspacing="0"
+    >
+      <tbody>
+        <tr style="vertical-align: top">
+          <td
+            style="word-break: break-word;border-collapse: collapse !important;vertical-align: top"
+          >
+            <!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td align="center" style="background-color: #FFFFFF;"><![endif]-->
+
+            <div style="background-color:#FFFFFF;">
+              <div
+                style="Margin: 0 auto;min-width: 320px;max-width: 500px;overflow-wrap: break-word;word-wrap: break-word;word-break: break-word;background-color: #000000;"
+                class="block-grid "
+              >
+                <div
+                  style="border-collapse: collapse;display: table;width: 100%;background-color:#000000;"
+                >
+                  <!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="background-color:#FFFFFF;" align="center"><table cellpadding="0" cellspacing="0" border="0" style="width: 500px;"><tr class="layout-full-width" style="background-color:#000000;"><![endif]-->
+
+                  <!--[if (mso)|(IE)]><td align="center" width="500" style="background-color:#FFFFFF; width:500px; padding-right: 0px; padding-left: 0px; padding-top:5px; padding-bottom:5px; border-top: 0px solid transparent; border-left: 0px solid transparent; border-bottom: 0px solid transparent; border-right: 0px solid transparent;" valign="top"><![endif]-->
+                  <div
+                    class="col num12"
+                    style="min-width: 320px;max-width: 500px;display: table-cell;vertical-align: top;"
+                  >
+                    <div
+                      style="background-color: #FFFFFF; width: 100% !important;"
+                    >
+                      <!--[if (!mso)&(!IE)]><!-->
+                      <div
+                        style="border-top: 0px solid transparent; border-left: 0px solid transparent; border-bottom: 0px solid transparent; border-right: 0px solid transparent; padding-top:5px; padding-bottom:5px; padding-right: 0px; padding-left: 0px;"
+                      >
+                        <!--<![endif]-->
+
+                        <!--[if mso]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding-right: 0px; padding-left: 30px; padding-top: 10px; padding-bottom: 10px;"><![endif]-->
+                        <div
+                          style="color:#000000;line-height:200%;font-family:'Trebuchet MS', 'Lucida Grande', 'Lucida Sans Unicode', 'Lucida Sans', Tahoma, sans-serif; padding-right: 0px; padding-left: 30px; padding-top: 10px; padding-bottom: 10px;"
+                        >
+                          <div
+                            style="font-size:12px;line-height:24px;font-family:'Trebuchet MS', 'Lucida Grande', 'Lucida Sans Unicode', 'Lucida Sans', Tahoma, sans-serif;color:#000000;text-align:left;"
+                          >
+                            <p
+                              style="margin: 0;font-size: 14px;line-height: 28px;text-align: left"
+                            >
+                              <span
+                                style="color: rgb(0, 0, 0); font-size: 14px; line-height: 28px;"
+                              >
+                                <strong>
+                                  <span
+                                    style="line-height: 56px; font-size: 28px;"
+                                  >
+                                    <span
+                                      style="font-size: 24px; line-height: 48px;"
+                                      >{{site_name}}</span
+                                    >.</span
+                                  >
+                                </strong>
+                                <span
+                                  style="line-height: 56px; font-size: 28px;"
+                                ></span>
+                              </span>
+                            </p>
+                          </div>
                         </div>
                         </div>
-                      </div>
-                      <!--[if mso]></td></tr></table><![endif]-->
-
+                        <!--[if mso]></td></tr></table><![endif]-->
 
 
-                      <!--[if (!mso)&(!IE)]><!-->
+                        <!--[if (!mso)&(!IE)]><!-->
+                      </div>
+                      <!--<![endif]-->
                     </div>
                     </div>
-                    <!--<![endif]-->
                   </div>
                   </div>
+                  <!--[if (mso)|(IE)]></td></tr></table></td></tr></table><![endif]-->
                 </div>
                 </div>
-                <!--[if (mso)|(IE)]></td></tr></table></td></tr></table><![endif]-->
               </div>
               </div>
             </div>
             </div>
-          </div>
-          <div style="background-color:transparent;">
-            <div style="Margin: 0 auto;min-width: 320px;max-width: 500px;overflow-wrap: break-word;word-wrap: break-word;word-break: break-word;background-color: transparent;"
-              class="block-grid ">
-              <div style="border-collapse: collapse;display: table;width: 100%;background-color:transparent;">
-                <!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="background-color:transparent;" align="center"><table cellpadding="0" cellspacing="0" border="0" style="width: 500px;"><tr class="layout-full-width" style="background-color:transparent;"><![endif]-->
-
-                <!--[if (mso)|(IE)]><td align="center" width="500" style=" width:500px; padding-right: 0px; padding-left: 0px; padding-top:5px; padding-bottom:5px; border-top: 0px solid transparent; border-left: 0px solid transparent; border-bottom: 0px solid transparent; border-right: 0px solid transparent;" valign="top"><![endif]-->
-                <div class="col num12" style="min-width: 320px;max-width: 500px;display: table-cell;vertical-align: top;">
-                  <div style="background-color: transparent; width: 100% !important;">
-                    <!--[if (!mso)&(!IE)]><!-->
-                    <div style="border-top: 0px solid transparent; border-left: 0px solid transparent; border-bottom: 0px solid transparent; border-right: 0px solid transparent; padding-top:5px; padding-bottom:5px; padding-right: 0px; padding-left: 0px;">
-                      <!--<![endif]-->
-
-
-                      <!--[if mso]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding-right: 30px; padding-left: 30px; padding-top: 30px; padding-bottom: 30px;"><![endif]-->
-                      <div style="color:#555555;line-height:180%;font-family:Arial, 'Helvetica Neue', Helvetica, sans-serif; padding-right: 30px; padding-left: 30px; padding-top: 30px; padding-bottom: 30px;">
-                        <div style="font-size:12px;line-height:22px;color:#555555;font-family:Arial, 'Helvetica Neue', Helvetica, sans-serif;text-align:left;">
-                          <p style="margin: 0;font-size: 14px;line-height: 25px">A password reset has been requested for your account.
-                            <br>
-                          </p>
-                          <p style="margin: 0;font-size: 14px;line-height: 25px">Please click on the button below to reset your password. There's no need to take any action if you didn't request this.</p>
+            <div style="background-color:transparent;">
+              <div
+                style="Margin: 0 auto;min-width: 320px;max-width: 500px;overflow-wrap: break-word;word-wrap: break-word;word-break: break-word;background-color: transparent;"
+                class="block-grid "
+              >
+                <div
+                  style="border-collapse: collapse;display: table;width: 100%;background-color:transparent;"
+                >
+                  <!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="background-color:transparent;" align="center"><table cellpadding="0" cellspacing="0" border="0" style="width: 500px;"><tr class="layout-full-width" style="background-color:transparent;"><![endif]-->
+
+                  <!--[if (mso)|(IE)]><td align="center" width="500" style=" width:500px; padding-right: 0px; padding-left: 0px; padding-top:5px; padding-bottom:5px; border-top: 0px solid transparent; border-left: 0px solid transparent; border-bottom: 0px solid transparent; border-right: 0px solid transparent;" valign="top"><![endif]-->
+                  <div
+                    class="col num12"
+                    style="min-width: 320px;max-width: 500px;display: table-cell;vertical-align: top;"
+                  >
+                    <div
+                      style="background-color: transparent; width: 100% !important;"
+                    >
+                      <!--[if (!mso)&(!IE)]><!-->
+                      <div
+                        style="border-top: 0px solid transparent; border-left: 0px solid transparent; border-bottom: 0px solid transparent; border-right: 0px solid transparent; padding-top:5px; padding-bottom:5px; padding-right: 0px; padding-left: 0px;"
+                      >
+                        <!--<![endif]-->
+
+                        <!--[if mso]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding-right: 30px; padding-left: 30px; padding-top: 30px; padding-bottom: 30px;"><![endif]-->
+                        <div
+                          style="color:#555555;line-height:180%;font-family:Arial, 'Helvetica Neue', Helvetica, sans-serif; padding-right: 30px; padding-left: 30px; padding-top: 30px; padding-bottom: 30px;"
+                        >
+                          <div
+                            style="font-size:12px;line-height:22px;color:#555555;font-family:Arial, 'Helvetica Neue', Helvetica, sans-serif;text-align:left;"
+                          >
+                            <p
+                              style="margin: 0;font-size: 14px;line-height: 25px"
+                            >
+                              A password reset has been requested for your
+                              account.
+                              <br />
+                            </p>
+                            <p
+                              style="margin: 0;font-size: 14px;line-height: 25px"
+                            >
+                              Please click on the button below to reset your
+                              password. There's no need to take any action if
+                              you didn't request this.
+                            </p>
+                          </div>
                         </div>
                         </div>
-                      </div>
-                      <!--[if mso]></td></tr></table><![endif]-->
-
+                        <!--[if mso]></td></tr></table><![endif]-->
 
 
-                      <!--[if (!mso)&(!IE)]><!-->
+                        <!--[if (!mso)&(!IE)]><!-->
+                      </div>
+                      <!--<![endif]-->
                     </div>
                     </div>
-                    <!--<![endif]-->
                   </div>
                   </div>
+                  <!--[if (mso)|(IE)]></td></tr></table></td></tr></table><![endif]-->
                 </div>
                 </div>
-                <!--[if (mso)|(IE)]></td></tr></table></td></tr></table><![endif]-->
               </div>
               </div>
             </div>
             </div>
-          </div>
-          <div style="background-color:transparent;">
-            <div style="Margin: 0 auto;min-width: 320px;max-width: 500px;overflow-wrap: break-word;word-wrap: break-word;word-break: break-word;background-color: transparent;"
-              class="block-grid ">
-              <div style="border-collapse: collapse;display: table;width: 100%;background-color:transparent;">
-                <!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="background-color:transparent;" align="center"><table cellpadding="0" cellspacing="0" border="0" style="width: 500px;"><tr class="layout-full-width" style="background-color:transparent;"><![endif]-->
-
-                <!--[if (mso)|(IE)]><td align="center" width="500" style=" width:500px; padding-right: 5px; padding-left: 5px; padding-top:5px; padding-bottom:5px; border-top: 0px solid transparent; border-left: 0px solid transparent; border-bottom: 0px solid transparent; border-right: 0px solid transparent;" valign="top"><![endif]-->
-                <div class="col num12" style="min-width: 320px;max-width: 500px;display: table-cell;vertical-align: top;">
-                  <div style="background-color: transparent; width: 100% !important;">
-                    <!--[if (!mso)&(!IE)]><!-->
-                    <div style="border-top: 0px solid transparent; border-left: 0px solid transparent; border-bottom: 0px solid transparent; border-right: 0px solid transparent; padding-top:5px; padding-bottom:5px; padding-right: 5px; padding-left: 5px;">
-                      <!--<![endif]-->
-
-
-
-                      <div align="left" class="button-container left" style="padding-right: 30px; padding-left: 30px; padding-top:30px; padding-bottom:30px;">
-                        <!--[if mso]><table width="100%" cellpadding="0" cellspacing="0" border="0" style="border-spacing: 0; border-collapse: collapse; mso-table-lspace:0pt; mso-table-rspace:0pt;"><tr><td style="padding-right: 30px; padding-left: 30px; padding-top:30px; padding-bottom:30px;" align="left"><v:roundrect xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w="urn:schemas-microsoft-com:office:word" href="http://{{domain}}/reset-password/{{resetpassword}}" style="height:31pt; v-text-anchor:middle; width:81pt;" arcsize="143%" strokecolor="#2196F3" fillcolor="#2196F3"><w:anchorlock/><v:textbox inset="0,0,0,0"><center style="color:#ffffff; font-family:Arial, 'Helvetica Neue', Helvetica, sans-serif; font-size:16px;"><![endif]-->
-                        <a href="https://{{domain}}/reset-password/{{resetpassword}}" target="_blank" style="display: block;text-decoration: none;-webkit-text-size-adjust: none;text-align: center;color: #ffffff; background-color: #2196F3; border-radius: 60px; -webkit-border-radius: 60px; -moz-border-radius: 60px; max-width: 128px; width: 48px;width: auto; border-top: 0px solid transparent; border-right: 0px solid transparent; border-bottom: 0px solid transparent; border-left: 0px solid transparent; padding-top: 5px; padding-right: 30px; padding-bottom: 5px; padding-left: 30px; font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif;mso-border-alt: none">
-                          <span style="font-size:16px;line-height:32px;">Reset password</span>
-                        </a>
-                        <!--[if mso]></center></v:textbox></v:roundrect></td></tr></table><![endif]-->
-                      </div>
-
-
-
-                      <!--[if mso]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding-right: 40px; padding-left: 40px; padding-top: 40px; padding-bottom: 40px;"><![endif]-->
-                      <div style="color:#555555;line-height:180%;font-family:Arial, 'Helvetica Neue', Helvetica, sans-serif; padding-right: 40px; padding-left: 40px; padding-top: 40px; padding-bottom: 40px;">
-                        <div style="font-size:12px;line-height:22px;text-align:center;color:#555555;font-family:Arial, 'Helvetica Neue', Helvetica, sans-serif;">
-                          <span style="font-size:14px; line-height:25px;">
-                            <a style="color:#0068A5;text-decoration: underline;" href="https://kutt.it" target="_blank" rel="noopener" data-mce-selected="1">kutt.it | Free &amp; open source URL shortener</a>
-                          </span>
-                          <br data-mce-bogus="1">
+            <div style="background-color:transparent;">
+              <div
+                style="Margin: 0 auto;min-width: 320px;max-width: 500px;overflow-wrap: break-word;word-wrap: break-word;word-break: break-word;background-color: transparent;"
+                class="block-grid "
+              >
+                <div
+                  style="border-collapse: collapse;display: table;width: 100%;background-color:transparent;"
+                >
+                  <!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="background-color:transparent;" align="center"><table cellpadding="0" cellspacing="0" border="0" style="width: 500px;"><tr class="layout-full-width" style="background-color:transparent;"><![endif]-->
+
+                  <!--[if (mso)|(IE)]><td align="center" width="500" style=" width:500px; padding-right: 5px; padding-left: 5px; padding-top:5px; padding-bottom:5px; border-top: 0px solid transparent; border-left: 0px solid transparent; border-bottom: 0px solid transparent; border-right: 0px solid transparent;" valign="top"><![endif]-->
+                  <div
+                    class="col num12"
+                    style="min-width: 320px;max-width: 500px;display: table-cell;vertical-align: top;"
+                  >
+                    <div
+                      style="background-color: transparent; width: 100% !important;"
+                    >
+                      <!--[if (!mso)&(!IE)]><!-->
+                      <div
+                        style="border-top: 0px solid transparent; border-left: 0px solid transparent; border-bottom: 0px solid transparent; border-right: 0px solid transparent; padding-top:5px; padding-bottom:5px; padding-right: 5px; padding-left: 5px;"
+                      >
+                        <!--<![endif]-->
+
+                        <div
+                          align="left"
+                          class="button-container left"
+                          style="padding-right: 30px; padding-left: 30px; padding-top:30px; padding-bottom:30px;"
+                        >
+                          <!--[if mso]><table width="100%" cellpadding="0" cellspacing="0" border="0" style="border-spacing: 0; border-collapse: collapse; mso-table-lspace:0pt; mso-table-rspace:0pt;"><tr><td style="padding-right: 30px; padding-left: 30px; padding-top:30px; padding-bottom:30px;" align="left"><v:roundrect xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w="urn:schemas-microsoft-com:office:word" href="http://{{domain}}/reset-password/{{resetpassword}}" style="height:31pt; v-text-anchor:middle; width:81pt;" arcsize="143%" strokecolor="#2196F3" fillcolor="#2196F3"><w:anchorlock/><v:textbox inset="0,0,0,0"><center style="color:#ffffff; font-family:Arial, 'Helvetica Neue', Helvetica, sans-serif; font-size:16px;"><![endif]-->
+                          <a
+                            href="https://{{domain}}/reset-password/{{resetpassword}}"
+                            target="_blank"
+                            style="display: block;text-decoration: none;-webkit-text-size-adjust: none;text-align: center;color: #ffffff; background-color: #2196F3; border-radius: 60px; -webkit-border-radius: 60px; -moz-border-radius: 60px; max-width: 128px; width: 48px;width: auto; border-top: 0px solid transparent; border-right: 0px solid transparent; border-bottom: 0px solid transparent; border-left: 0px solid transparent; padding-top: 5px; padding-right: 30px; padding-bottom: 5px; padding-left: 30px; font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif;mso-border-alt: none"
+                          >
+                            <span style="font-size:16px;line-height:32px;"
+                              >Reset password</span
+                            >
+                          </a>
+                          <!--[if mso]></center></v:textbox></v:roundrect></td></tr></table><![endif]-->
                         </div>
                         </div>
-                      </div>
-                      <!--[if mso]></td></tr></table><![endif]-->
 
 
+                        <!--[if mso]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding-right: 40px; padding-left: 40px; padding-top: 40px; padding-bottom: 40px;"><![endif]-->
+                        <div
+                          style="color:#555555;line-height:180%;font-family:Arial, 'Helvetica Neue', Helvetica, sans-serif; padding-right: 40px; padding-left: 40px; padding-top: 40px; padding-bottom: 40px;"
+                        >
+                          <div
+                            style="font-size:12px;line-height:22px;text-align:center;color:#555555;font-family:Arial, 'Helvetica Neue', Helvetica, sans-serif;"
+                          >
+                            <span style="font-size:14px; line-height:25px;">
+                              <a
+                                style="color:#0068A5;text-decoration: underline;"
+                                href="https://{{domain}}"
+                                target="_blank"
+                                rel="noopener"
+                                data-mce-selected="1"
+                                >{{site_name}} | Free &amp; open source URL
+                                shortener</a
+                              >
+                            </span>
+                            <br data-mce-bogus="1" />
+                          </div>
+                        </div>
+                        <!--[if mso]></td></tr></table><![endif]-->
 
 
-                      <!--[if (!mso)&(!IE)]><!-->
+                        <!--[if (!mso)&(!IE)]><!-->
+                      </div>
+                      <!--<![endif]-->
                     </div>
                     </div>
-                    <!--<![endif]-->
                   </div>
                   </div>
+                  <!--[if (mso)|(IE)]></td></tr></table></td></tr></table><![endif]-->
                 </div>
                 </div>
-                <!--[if (mso)|(IE)]></td></tr></table></td></tr></table><![endif]-->
               </div>
               </div>
             </div>
             </div>
-          </div>
-          <!--[if (mso)|(IE)]></td></tr></table><![endif]-->
-        </td>
-      </tr>
-    </tbody>
-  </table>
-  <!--[if (mso)|(IE)]></div><![endif]-->
-
-
-</body>
-
-</html>
+            <!--[if (mso)|(IE)]></td></tr></table><![endif]-->
+          </td>
+        </tr>
+      </tbody>
+    </table>
+    <!--[if (mso)|(IE)]></div><![endif]-->
+  </body>
+</html>

+ 454 - 370
server/mail/template-verify.html

@@ -1,424 +1,508 @@
-<!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" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
-
-<head>
-  <!--[if gte mso 9]><xml>
-   <o:OfficeDocumentSettings>
-    <o:AllowPNG/>
-    <o:PixelsPerInch>96</o:PixelsPerInch>
-   </o:OfficeDocumentSettings>
-  </xml><![endif]-->
-  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-  <meta name="viewport" content="width=device-width">
-  <!--[if !mso]><!-->
-  <meta http-equiv="X-UA-Compatible" content="IE=edge">
-  <!--<![endif]-->
-  <title></title>
-
-
-  <style type="text/css" id="media-query">
-    body {
-      margin: 0;
-      padding: 0;
-    }
-
-    table,
-    tr,
-    td {
-      vertical-align: top;
-      border-collapse: collapse;
-    }
-
-    .ie-browser table,
-    .mso-container table {
-      table-layout: fixed;
-    }
-
-    * {
-      line-height: inherit;
-    }
-
-    a[x-apple-data-detectors=true] {
-      color: inherit !important;
-      text-decoration: none !important;
-    }
-
-    [owa] .img-container div,
-    [owa] .img-container button {
-      display: block !important;
-    }
-
-    [owa] .fullwidth button {
-      width: 100% !important;
-    }
-
-    [owa] .block-grid .col {
-      display: table-cell;
-      float: none !important;
-      vertical-align: top;
-    }
-
-    .ie-browser .num12,
-    .ie-browser .block-grid,
-    [owa] .num12,
-    [owa] .block-grid {
-      width: 500px !important;
-    }
-
-    .ExternalClass,
-    .ExternalClass p,
-    .ExternalClass span,
-    .ExternalClass font,
-    .ExternalClass td,
-    .ExternalClass div {
-      line-height: 100%;
-    }
-
-    .ie-browser .mixed-two-up .num4,
-    [owa] .mixed-two-up .num4 {
-      width: 164px !important;
-    }
-
-    .ie-browser .mixed-two-up .num8,
-    [owa] .mixed-two-up .num8 {
-      width: 328px !important;
-    }
-
-    .ie-browser .block-grid.two-up .col,
-    [owa] .block-grid.two-up .col {
-      width: 250px !important;
-    }
-
-    .ie-browser .block-grid.three-up .col,
-    [owa] .block-grid.three-up .col {
-      width: 166px !important;
-    }
-
-    .ie-browser .block-grid.four-up .col,
-    [owa] .block-grid.four-up .col {
-      width: 125px !important;
-    }
-
-    .ie-browser .block-grid.five-up .col,
-    [owa] .block-grid.five-up .col {
-      width: 100px !important;
-    }
-
-    .ie-browser .block-grid.six-up .col,
-    [owa] .block-grid.six-up .col {
-      width: 83px !important;
-    }
-
-    .ie-browser .block-grid.seven-up .col,
-    [owa] .block-grid.seven-up .col {
-      width: 71px !important;
-    }
-
-    .ie-browser .block-grid.eight-up .col,
-    [owa] .block-grid.eight-up .col {
-      width: 62px !important;
-    }
-
-    .ie-browser .block-grid.nine-up .col,
-    [owa] .block-grid.nine-up .col {
-      width: 55px !important;
-    }
-
-    .ie-browser .block-grid.ten-up .col,
-    [owa] .block-grid.ten-up .col {
-      width: 50px !important;
-    }
-
-    .ie-browser .block-grid.eleven-up .col,
-    [owa] .block-grid.eleven-up .col {
-      width: 45px !important;
-    }
-
-    .ie-browser .block-grid.twelve-up .col,
-    [owa] .block-grid.twelve-up .col {
-      width: 41px !important;
-    }
-
-    @media only screen and (min-width: 520px) {
-      .block-grid {
-        width: 500px !important;
+<!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"
+  xmlns:v="urn:schemas-microsoft-com:vml"
+  xmlns:o="urn:schemas-microsoft-com:office:office"
+>
+  <head>
+    <!--[if gte mso 9
+      ]><xml>
+        <o:OfficeDocumentSettings>
+          <o:AllowPNG />
+          <o:PixelsPerInch>96</o:PixelsPerInch>
+        </o:OfficeDocumentSettings>
+      </xml><!
+    [endif]-->
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <meta name="viewport" content="width=device-width" />
+    <!--[if !mso]><!-->
+    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+    <!--<![endif]-->
+    <title></title>
+
+    <style type="text/css" id="media-query">
+      body {
+        margin: 0;
+        padding: 0;
+      }
+
+      table,
+      tr,
+      td {
+        vertical-align: top;
+        border-collapse: collapse;
+      }
+
+      .ie-browser table,
+      .mso-container table {
+        table-layout: fixed;
+      }
+
+      * {
+        line-height: inherit;
+      }
+
+      a[x-apple-data-detectors="true"] {
+        color: inherit !important;
+        text-decoration: none !important;
+      }
+
+      [owa] .img-container div,
+      [owa] .img-container button {
+        display: block !important;
+      }
+
+      [owa] .fullwidth button {
+        width: 100% !important;
       }
       }
-      .block-grid .col {
+
+      [owa] .block-grid .col {
+        display: table-cell;
+        float: none !important;
         vertical-align: top;
         vertical-align: top;
       }
       }
-      .block-grid .col.num12 {
+
+      .ie-browser .num12,
+      .ie-browser .block-grid,
+      [owa] .num12,
+      [owa] .block-grid {
         width: 500px !important;
         width: 500px !important;
       }
       }
-      .block-grid.mixed-two-up .col.num4 {
+
+      .ExternalClass,
+      .ExternalClass p,
+      .ExternalClass span,
+      .ExternalClass font,
+      .ExternalClass td,
+      .ExternalClass div {
+        line-height: 100%;
+      }
+
+      .ie-browser .mixed-two-up .num4,
+      [owa] .mixed-two-up .num4 {
         width: 164px !important;
         width: 164px !important;
       }
       }
-      .block-grid.mixed-two-up .col.num8 {
+
+      .ie-browser .mixed-two-up .num8,
+      [owa] .mixed-two-up .num8 {
         width: 328px !important;
         width: 328px !important;
       }
       }
-      .block-grid.two-up .col {
+
+      .ie-browser .block-grid.two-up .col,
+      [owa] .block-grid.two-up .col {
         width: 250px !important;
         width: 250px !important;
       }
       }
-      .block-grid.three-up .col {
+
+      .ie-browser .block-grid.three-up .col,
+      [owa] .block-grid.three-up .col {
         width: 166px !important;
         width: 166px !important;
       }
       }
-      .block-grid.four-up .col {
+
+      .ie-browser .block-grid.four-up .col,
+      [owa] .block-grid.four-up .col {
         width: 125px !important;
         width: 125px !important;
       }
       }
-      .block-grid.five-up .col {
+
+      .ie-browser .block-grid.five-up .col,
+      [owa] .block-grid.five-up .col {
         width: 100px !important;
         width: 100px !important;
       }
       }
-      .block-grid.six-up .col {
+
+      .ie-browser .block-grid.six-up .col,
+      [owa] .block-grid.six-up .col {
         width: 83px !important;
         width: 83px !important;
       }
       }
-      .block-grid.seven-up .col {
+
+      .ie-browser .block-grid.seven-up .col,
+      [owa] .block-grid.seven-up .col {
         width: 71px !important;
         width: 71px !important;
       }
       }
-      .block-grid.eight-up .col {
+
+      .ie-browser .block-grid.eight-up .col,
+      [owa] .block-grid.eight-up .col {
         width: 62px !important;
         width: 62px !important;
       }
       }
-      .block-grid.nine-up .col {
-        width: 55px !important;
-      }
-      .block-grid.ten-up .col {
-        width: 50px !important;
-      }
-      .block-grid.eleven-up .col {
-        width: 45px !important;
-      }
-      .block-grid.twelve-up .col {
-        width: 41px !important;
-      }
-    }
 
 
-    @media (max-width: 520px) {
-      .block-grid,
-      .col {
-        min-width: 320px !important;
-        max-width: 100% !important;
-        display: block !important;
-      }
-      .block-grid {
-        width: calc(100% - 40px) !important;
-      }
-      .col {
-        width: 100% !important;
-      }
-      .col>div {
-        margin: 0 auto;
-      }
-      img.fullwidth,
-      img.fullwidthOnMobile {
-        max-width: 100% !important;
-      }
-      .no-stack .col {
-        min-width: 0 !important;
-        display: table-cell !important;
-      }
-      .no-stack.two-up .col {
-        width: 50% !important;
-      }
-      .no-stack.mixed-two-up .col.num4 {
-        width: 33% !important;
-      }
-      .no-stack.mixed-two-up .col.num8 {
-        width: 66% !important;
-      }
-      .no-stack.three-up .col.num4 {
-        width: 33% !important;
-      }
-      .no-stack.four-up .col.num3 {
-        width: 25% !important;
-      }
-    }
-  </style>
-</head>
-
-<body class="clean-body" style="margin: 0;padding: 0;-webkit-text-size-adjust: 100%;background-color: #FFFFFF">
-  <style type="text/css" id="media-query-bodytag">
-    @media (max-width: 520px) {
-      .block-grid {
-        min-width: 320px!important;
-        max-width: 100%!important;
-        width: 100%!important;
-        display: block!important;
+      .ie-browser .block-grid.nine-up .col,
+      [owa] .block-grid.nine-up .col {
+        width: 55px !important;
       }
       }
 
 
-      .col {
-        min-width: 320px!important;
-        max-width: 100%!important;
-        width: 100%!important;
-        display: block!important;
+      .ie-browser .block-grid.ten-up .col,
+      [owa] .block-grid.ten-up .col {
+        width: 50px !important;
       }
       }
 
 
-      .col>div {
-        margin: 0 auto;
+      .ie-browser .block-grid.eleven-up .col,
+      [owa] .block-grid.eleven-up .col {
+        width: 45px !important;
       }
       }
 
 
-      img.fullwidth {
-        max-width: 100%!important;
-      }
-      img.fullwidthOnMobile {
-        max-width: 100%!important;
-      }
-      .no-stack .col {
-        min-width: 0!important;
-        display: table-cell!important;
-      }
-      .no-stack.two-up .col {
-        width: 50%!important;
-      }
-      .no-stack.mixed-two-up .col.num4 {
-        width: 33%!important;
-      }
-      .no-stack.mixed-two-up .col.num8 {
-        width: 66%!important;
-      }
-      .no-stack.three-up .col.num4 {
-        width: 33%!important
-      }
-      .no-stack.four-up .col.num3 {
-        width: 25%!important
+      .ie-browser .block-grid.twelve-up .col,
+      [owa] .block-grid.twelve-up .col {
+        width: 41px !important;
       }
       }
-    }
-  </style>
-  <!--[if IE]><div class="ie-browser"><![endif]-->
-  <!--[if mso]><div class="mso-container"><![endif]-->
-  <table class="nl-container" style="border-collapse: collapse;table-layout: fixed;border-spacing: 0;mso-table-lspace: 0pt;mso-table-rspace: 0pt;vertical-align: top;min-width: 320px;Margin: 0 auto;background-color: #FFFFFF;width: 100%"
-    cellpadding="0" cellspacing="0">
-    <tbody>
-      <tr style="vertical-align: top">
-        <td style="word-break: break-word;border-collapse: collapse !important;vertical-align: top">
-          <!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td align="center" style="background-color: #FFFFFF;"><![endif]-->
-
-          <div style="background-color:#FFFFFF;">
-            <div style="Margin: 0 auto;min-width: 320px;max-width: 500px;overflow-wrap: break-word;word-wrap: break-word;word-break: break-word;background-color: #000000;"
-              class="block-grid ">
-              <div style="border-collapse: collapse;display: table;width: 100%;background-color:#000000;">
-                <!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="background-color:#FFFFFF;" align="center"><table cellpadding="0" cellspacing="0" border="0" style="width: 500px;"><tr class="layout-full-width" style="background-color:#000000;"><![endif]-->
-
-                <!--[if (mso)|(IE)]><td align="center" width="500" style="background-color:#FFFFFF; width:500px; padding-right: 0px; padding-left: 0px; padding-top:5px; padding-bottom:5px; border-top: 0px solid transparent; border-left: 0px solid transparent; border-bottom: 0px solid transparent; border-right: 0px solid transparent;" valign="top"><![endif]-->
-                <div class="col num12" style="min-width: 320px;max-width: 500px;display: table-cell;vertical-align: top;">
-                  <div style="background-color: #FFFFFF; width: 100% !important;">
-                    <!--[if (!mso)&(!IE)]><!-->
-                    <div style="border-top: 0px solid transparent; border-left: 0px solid transparent; border-bottom: 0px solid transparent; border-right: 0px solid transparent; padding-top:5px; padding-bottom:5px; padding-right: 0px; padding-left: 0px;">
-                      <!--<![endif]-->
 
 
-
-                      <!--[if mso]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding-right: 0px; padding-left: 30px; padding-top: 10px; padding-bottom: 10px;"><![endif]-->
-                      <div style="color:#000000;line-height:200%;font-family:'Trebuchet MS', 'Lucida Grande', 'Lucida Sans Unicode', 'Lucida Sans', Tahoma, sans-serif; padding-right: 0px; padding-left: 30px; padding-top: 10px; padding-bottom: 10px;">
-                        <div style="font-size:12px;line-height:24px;font-family:'Trebuchet MS', 'Lucida Grande', 'Lucida Sans Unicode', 'Lucida Sans', Tahoma, sans-serif;color:#000000;text-align:left;">
-                          <p style="margin: 0;font-size: 14px;line-height: 28px;text-align: left">
-                            <span style="color: rgb(0, 0, 0); font-size: 14px; line-height: 28px;">
-                              <strong>
-                                <span style="line-height: 56px; font-size: 28px;">
-                                  <span style="font-size: 24px; line-height: 48px;">Kutt</span>.</span>
-                              </strong>
-                              <span style="line-height: 56px; font-size: 28px;"></span>
-                            </span>
-                          </p>
+      @media only screen and (min-width: 520px) {
+        .block-grid {
+          width: 500px !important;
+        }
+        .block-grid .col {
+          vertical-align: top;
+        }
+        .block-grid .col.num12 {
+          width: 500px !important;
+        }
+        .block-grid.mixed-two-up .col.num4 {
+          width: 164px !important;
+        }
+        .block-grid.mixed-two-up .col.num8 {
+          width: 328px !important;
+        }
+        .block-grid.two-up .col {
+          width: 250px !important;
+        }
+        .block-grid.three-up .col {
+          width: 166px !important;
+        }
+        .block-grid.four-up .col {
+          width: 125px !important;
+        }
+        .block-grid.five-up .col {
+          width: 100px !important;
+        }
+        .block-grid.six-up .col {
+          width: 83px !important;
+        }
+        .block-grid.seven-up .col {
+          width: 71px !important;
+        }
+        .block-grid.eight-up .col {
+          width: 62px !important;
+        }
+        .block-grid.nine-up .col {
+          width: 55px !important;
+        }
+        .block-grid.ten-up .col {
+          width: 50px !important;
+        }
+        .block-grid.eleven-up .col {
+          width: 45px !important;
+        }
+        .block-grid.twelve-up .col {
+          width: 41px !important;
+        }
+      }
+
+      @media (max-width: 520px) {
+        .block-grid,
+        .col {
+          min-width: 320px !important;
+          max-width: 100% !important;
+          display: block !important;
+        }
+        .block-grid {
+          width: calc(100% - 40px) !important;
+        }
+        .col {
+          width: 100% !important;
+        }
+        .col > div {
+          margin: 0 auto;
+        }
+        img.fullwidth,
+        img.fullwidthOnMobile {
+          max-width: 100% !important;
+        }
+        .no-stack .col {
+          min-width: 0 !important;
+          display: table-cell !important;
+        }
+        .no-stack.two-up .col {
+          width: 50% !important;
+        }
+        .no-stack.mixed-two-up .col.num4 {
+          width: 33% !important;
+        }
+        .no-stack.mixed-two-up .col.num8 {
+          width: 66% !important;
+        }
+        .no-stack.three-up .col.num4 {
+          width: 33% !important;
+        }
+        .no-stack.four-up .col.num3 {
+          width: 25% !important;
+        }
+      }
+    </style>
+  </head>
+
+  <body
+    class="clean-body"
+    style="margin: 0;padding: 0;-webkit-text-size-adjust: 100%;background-color: #FFFFFF"
+  >
+    <style type="text/css" id="media-query-bodytag">
+      @media (max-width: 520px) {
+        .block-grid {
+          min-width: 320px !important;
+          max-width: 100% !important;
+          width: 100% !important;
+          display: block !important;
+        }
+
+        .col {
+          min-width: 320px !important;
+          max-width: 100% !important;
+          width: 100% !important;
+          display: block !important;
+        }
+
+        .col > div {
+          margin: 0 auto;
+        }
+
+        img.fullwidth {
+          max-width: 100% !important;
+        }
+        img.fullwidthOnMobile {
+          max-width: 100% !important;
+        }
+        .no-stack .col {
+          min-width: 0 !important;
+          display: table-cell !important;
+        }
+        .no-stack.two-up .col {
+          width: 50% !important;
+        }
+        .no-stack.mixed-two-up .col.num4 {
+          width: 33% !important;
+        }
+        .no-stack.mixed-two-up .col.num8 {
+          width: 66% !important;
+        }
+        .no-stack.three-up .col.num4 {
+          width: 33% !important;
+        }
+        .no-stack.four-up .col.num3 {
+          width: 25% !important;
+        }
+      }
+    </style>
+    <!--[if IE]><div class="ie-browser"><![endif]-->
+    <!--[if mso]><div class="mso-container"><![endif]-->
+    <table
+      class="nl-container"
+      style="border-collapse: collapse;table-layout: fixed;border-spacing: 0;mso-table-lspace: 0pt;mso-table-rspace: 0pt;vertical-align: top;min-width: 320px;Margin: 0 auto;background-color: #FFFFFF;width: 100%"
+      cellpadding="0"
+      cellspacing="0"
+    >
+      <tbody>
+        <tr style="vertical-align: top">
+          <td
+            style="word-break: break-word;border-collapse: collapse !important;vertical-align: top"
+          >
+            <!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td align="center" style="background-color: #FFFFFF;"><![endif]-->
+
+            <div style="background-color:#FFFFFF;">
+              <div
+                style="Margin: 0 auto;min-width: 320px;max-width: 500px;overflow-wrap: break-word;word-wrap: break-word;word-break: break-word;background-color: #000000;"
+                class="block-grid "
+              >
+                <div
+                  style="border-collapse: collapse;display: table;width: 100%;background-color:#000000;"
+                >
+                  <!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="background-color:#FFFFFF;" align="center"><table cellpadding="0" cellspacing="0" border="0" style="width: 500px;"><tr class="layout-full-width" style="background-color:#000000;"><![endif]-->
+
+                  <!--[if (mso)|(IE)]><td align="center" width="500" style="background-color:#FFFFFF; width:500px; padding-right: 0px; padding-left: 0px; padding-top:5px; padding-bottom:5px; border-top: 0px solid transparent; border-left: 0px solid transparent; border-bottom: 0px solid transparent; border-right: 0px solid transparent;" valign="top"><![endif]-->
+                  <div
+                    class="col num12"
+                    style="min-width: 320px;max-width: 500px;display: table-cell;vertical-align: top;"
+                  >
+                    <div
+                      style="background-color: #FFFFFF; width: 100% !important;"
+                    >
+                      <!--[if (!mso)&(!IE)]><!-->
+                      <div
+                        style="border-top: 0px solid transparent; border-left: 0px solid transparent; border-bottom: 0px solid transparent; border-right: 0px solid transparent; padding-top:5px; padding-bottom:5px; padding-right: 0px; padding-left: 0px;"
+                      >
+                        <!--<![endif]-->
+
+                        <!--[if mso]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding-right: 0px; padding-left: 30px; padding-top: 10px; padding-bottom: 10px;"><![endif]-->
+                        <div
+                          style="color:#000000;line-height:200%;font-family:'Trebuchet MS', 'Lucida Grande', 'Lucida Sans Unicode', 'Lucida Sans', Tahoma, sans-serif; padding-right: 0px; padding-left: 30px; padding-top: 10px; padding-bottom: 10px;"
+                        >
+                          <div
+                            style="font-size:12px;line-height:24px;font-family:'Trebuchet MS', 'Lucida Grande', 'Lucida Sans Unicode', 'Lucida Sans', Tahoma, sans-serif;color:#000000;text-align:left;"
+                          >
+                            <p
+                              style="margin: 0;font-size: 14px;line-height: 28px;text-align: left"
+                            >
+                              <span
+                                style="color: rgb(0, 0, 0); font-size: 14px; line-height: 28px;"
+                              >
+                                <strong>
+                                  <span
+                                    style="line-height: 56px; font-size: 28px;"
+                                  >
+                                    <span
+                                      style="font-size: 24px; line-height: 48px;"
+                                      >{{site_name}}</span
+                                    >.</span
+                                  >
+                                </strong>
+                                <span
+                                  style="line-height: 56px; font-size: 28px;"
+                                ></span>
+                              </span>
+                            </p>
+                          </div>
                         </div>
                         </div>
-                      </div>
-                      <!--[if mso]></td></tr></table><![endif]-->
-
+                        <!--[if mso]></td></tr></table><![endif]-->
 
 
-                      <!--[if (!mso)&(!IE)]><!-->
+                        <!--[if (!mso)&(!IE)]><!-->
+                      </div>
+                      <!--<![endif]-->
                     </div>
                     </div>
-                    <!--<![endif]-->
                   </div>
                   </div>
+                  <!--[if (mso)|(IE)]></td></tr></table></td></tr></table><![endif]-->
                 </div>
                 </div>
-                <!--[if (mso)|(IE)]></td></tr></table></td></tr></table><![endif]-->
               </div>
               </div>
             </div>
             </div>
-          </div>
-          <div style="background-color:transparent;">
-            <div style="Margin: 0 auto;min-width: 320px;max-width: 500px;overflow-wrap: break-word;word-wrap: break-word;word-break: break-word;background-color: transparent;"
-              class="block-grid ">
-              <div style="border-collapse: collapse;display: table;width: 100%;background-color:transparent;">
-                <!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="background-color:transparent;" align="center"><table cellpadding="0" cellspacing="0" border="0" style="width: 500px;"><tr class="layout-full-width" style="background-color:transparent;"><![endif]-->
-
-                <!--[if (mso)|(IE)]><td align="center" width="500" style=" width:500px; padding-right: 0px; padding-left: 0px; padding-top:5px; padding-bottom:5px; border-top: 0px solid transparent; border-left: 0px solid transparent; border-bottom: 0px solid transparent; border-right: 0px solid transparent;" valign="top"><![endif]-->
-                <div class="col num12" style="min-width: 320px;max-width: 500px;display: table-cell;vertical-align: top;">
-                  <div style="background-color: transparent; width: 100% !important;">
-                    <!--[if (!mso)&(!IE)]><!-->
-                    <div style="border-top: 0px solid transparent; border-left: 0px solid transparent; border-bottom: 0px solid transparent; border-right: 0px solid transparent; padding-top:5px; padding-bottom:5px; padding-right: 0px; padding-left: 0px;">
-                      <!--<![endif]-->
-
-
-                      <!--[if mso]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding-right: 30px; padding-left: 30px; padding-top: 30px; padding-bottom: 30px;"><![endif]-->
-                      <div style="color:#555555;line-height:180%;font-family:Arial, 'Helvetica Neue', Helvetica, sans-serif; padding-right: 30px; padding-left: 30px; padding-top: 30px; padding-bottom: 30px;">
-                        <div style="font-size:12px;line-height:22px;color:#555555;font-family:Arial, 'Helvetica Neue', Helvetica, sans-serif;text-align:left;">
-                          <p style="margin: 0;font-size: 14px;line-height: 25px">Thanks for creating an account on Kutt.it.
-                            <br>
-                          </p>
-                          <p style="margin: 0;font-size: 14px;line-height: 25px">Please verify your email address using the link below.</p>
+            <div style="background-color:transparent;">
+              <div
+                style="Margin: 0 auto;min-width: 320px;max-width: 500px;overflow-wrap: break-word;word-wrap: break-word;word-break: break-word;background-color: transparent;"
+                class="block-grid "
+              >
+                <div
+                  style="border-collapse: collapse;display: table;width: 100%;background-color:transparent;"
+                >
+                  <!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="background-color:transparent;" align="center"><table cellpadding="0" cellspacing="0" border="0" style="width: 500px;"><tr class="layout-full-width" style="background-color:transparent;"><![endif]-->
+
+                  <!--[if (mso)|(IE)]><td align="center" width="500" style=" width:500px; padding-right: 0px; padding-left: 0px; padding-top:5px; padding-bottom:5px; border-top: 0px solid transparent; border-left: 0px solid transparent; border-bottom: 0px solid transparent; border-right: 0px solid transparent;" valign="top"><![endif]-->
+                  <div
+                    class="col num12"
+                    style="min-width: 320px;max-width: 500px;display: table-cell;vertical-align: top;"
+                  >
+                    <div
+                      style="background-color: transparent; width: 100% !important;"
+                    >
+                      <!--[if (!mso)&(!IE)]><!-->
+                      <div
+                        style="border-top: 0px solid transparent; border-left: 0px solid transparent; border-bottom: 0px solid transparent; border-right: 0px solid transparent; padding-top:5px; padding-bottom:5px; padding-right: 0px; padding-left: 0px;"
+                      >
+                        <!--<![endif]-->
+
+                        <!--[if mso]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding-right: 30px; padding-left: 30px; padding-top: 30px; padding-bottom: 30px;"><![endif]-->
+                        <div
+                          style="color:#555555;line-height:180%;font-family:Arial, 'Helvetica Neue', Helvetica, sans-serif; padding-right: 30px; padding-left: 30px; padding-top: 30px; padding-bottom: 30px;"
+                        >
+                          <div
+                            style="font-size:12px;line-height:22px;color:#555555;font-family:Arial, 'Helvetica Neue', Helvetica, sans-serif;text-align:left;"
+                          >
+                            <p
+                              style="margin: 0;font-size: 14px;line-height: 25px"
+                            >
+                              Thanks for creating an account on {{domain}}.
+                              <br />
+                            </p>
+                            <p
+                              style="margin: 0;font-size: 14px;line-height: 25px"
+                            >
+                              Please verify your email address using the link
+                              below.
+                            </p>
+                          </div>
                         </div>
                         </div>
-                      </div>
-                      <!--[if mso]></td></tr></table><![endif]-->
-
+                        <!--[if mso]></td></tr></table><![endif]-->
 
 
-                      <!--[if (!mso)&(!IE)]><!-->
+                        <!--[if (!mso)&(!IE)]><!-->
+                      </div>
+                      <!--<![endif]-->
                     </div>
                     </div>
-                    <!--<![endif]-->
                   </div>
                   </div>
+                  <!--[if (mso)|(IE)]></td></tr></table></td></tr></table><![endif]-->
                 </div>
                 </div>
-                <!--[if (mso)|(IE)]></td></tr></table></td></tr></table><![endif]-->
               </div>
               </div>
             </div>
             </div>
-          </div>
-          <div style="background-color:transparent;">
-            <div style="Margin: 0 auto;min-width: 320px;max-width: 500px;overflow-wrap: break-word;word-wrap: break-word;word-break: break-word;background-color: transparent;"
-              class="block-grid ">
-              <div style="border-collapse: collapse;display: table;width: 100%;background-color:transparent;">
-                <!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="background-color:transparent;" align="center"><table cellpadding="0" cellspacing="0" border="0" style="width: 500px;"><tr class="layout-full-width" style="background-color:transparent;"><![endif]-->
-
-                <!--[if (mso)|(IE)]><td align="center" width="500" style=" width:500px; padding-right: 5px; padding-left: 5px; padding-top:5px; padding-bottom:5px; border-top: 0px solid transparent; border-left: 0px solid transparent; border-bottom: 0px solid transparent; border-right: 0px solid transparent;" valign="top"><![endif]-->
-                <div class="col num12" style="min-width: 320px;max-width: 500px;display: table-cell;vertical-align: top;">
-                  <div style="background-color: transparent; width: 100% !important;">
-                    <!--[if (!mso)&(!IE)]><!-->
-                    <div style="border-top: 0px solid transparent; border-left: 0px solid transparent; border-bottom: 0px solid transparent; border-right: 0px solid transparent; padding-top:5px; padding-bottom:5px; padding-right: 5px; padding-left: 5px;">
-                      <!--<![endif]-->
-
-
-
-                      <div align="left" class="button-container left" style="padding-right: 30px; padding-left: 30px; padding-top:30px; padding-bottom:30px;">
-                        <!--[if mso]><table width="100%" cellpadding="0" cellspacing="0" border="0" style="border-spacing: 0; border-collapse: collapse; mso-table-lspace:0pt; mso-table-rspace:0pt;"><tr><td style="padding-right: 30px; padding-left: 30px; padding-top:30px; padding-bottom:30px;" align="left"><v:roundrect xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w="urn:schemas-microsoft-com:office:word" href="http://{{domain}}/verify/{{verification}}" style="height:31pt; v-text-anchor:middle; width:81pt;" arcsize="143%" strokecolor="#2196F3" fillcolor="#2196F3"><w:anchorlock/><v:textbox inset="0,0,0,0"><center style="color:#ffffff; font-family:Arial, 'Helvetica Neue', Helvetica, sans-serif; font-size:16px;"><![endif]-->
-                        <a href="https://{{domain}}/verify/{{verification}}" target="_blank" style="display: block;text-decoration: none;-webkit-text-size-adjust: none;text-align: center;color: #ffffff; background-color: #2196F3; border-radius: 60px; -webkit-border-radius: 60px; -moz-border-radius: 60px; max-width: 108px; width: 48px;width: auto; border-top: 0px solid transparent; border-right: 0px solid transparent; border-bottom: 0px solid transparent; border-left: 0px solid transparent; padding-top: 5px; padding-right: 30px; padding-bottom: 5px; padding-left: 30px; font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif;mso-border-alt: none">
-                          <span style="font-size:16px;line-height:32px;">Verify account</span>
-                        </a>
-                        <!--[if mso]></center></v:textbox></v:roundrect></td></tr></table><![endif]-->
-                      </div>
-
-
-
-                      <!--[if mso]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding-right: 40px; padding-left: 40px; padding-top: 40px; padding-bottom: 40px;"><![endif]-->
-                      <div style="color:#555555;line-height:180%;font-family:Arial, 'Helvetica Neue', Helvetica, sans-serif; padding-right: 40px; padding-left: 40px; padding-top: 40px; padding-bottom: 40px;">
-                        <div style="font-size:12px;line-height:22px;text-align:center;color:#555555;font-family:Arial, 'Helvetica Neue', Helvetica, sans-serif;">
-                          <span style="font-size:14px; line-height:25px;">
-                            <a style="color:#0068A5;text-decoration: underline;" href="https://kutt.it" target="_blank" rel="noopener" data-mce-selected="1">kutt.it | Free &amp; open source URL shortener</a>
-                          </span>
-                          <br data-mce-bogus="1">
+            <div style="background-color:transparent;">
+              <div
+                style="Margin: 0 auto;min-width: 320px;max-width: 500px;overflow-wrap: break-word;word-wrap: break-word;word-break: break-word;background-color: transparent;"
+                class="block-grid "
+              >
+                <div
+                  style="border-collapse: collapse;display: table;width: 100%;background-color:transparent;"
+                >
+                  <!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="background-color:transparent;" align="center"><table cellpadding="0" cellspacing="0" border="0" style="width: 500px;"><tr class="layout-full-width" style="background-color:transparent;"><![endif]-->
+
+                  <!--[if (mso)|(IE)]><td align="center" width="500" style=" width:500px; padding-right: 5px; padding-left: 5px; padding-top:5px; padding-bottom:5px; border-top: 0px solid transparent; border-left: 0px solid transparent; border-bottom: 0px solid transparent; border-right: 0px solid transparent;" valign="top"><![endif]-->
+                  <div
+                    class="col num12"
+                    style="min-width: 320px;max-width: 500px;display: table-cell;vertical-align: top;"
+                  >
+                    <div
+                      style="background-color: transparent; width: 100% !important;"
+                    >
+                      <!--[if (!mso)&(!IE)]><!-->
+                      <div
+                        style="border-top: 0px solid transparent; border-left: 0px solid transparent; border-bottom: 0px solid transparent; border-right: 0px solid transparent; padding-top:5px; padding-bottom:5px; padding-right: 5px; padding-left: 5px;"
+                      >
+                        <!--<![endif]-->
+
+                        <div
+                          align="left"
+                          class="button-container left"
+                          style="padding-right: 30px; padding-left: 30px; padding-top:30px; padding-bottom:30px;"
+                        >
+                          <!--[if mso]><table width="100%" cellpadding="0" cellspacing="0" border="0" style="border-spacing: 0; border-collapse: collapse; mso-table-lspace:0pt; mso-table-rspace:0pt;"><tr><td style="padding-right: 30px; padding-left: 30px; padding-top:30px; padding-bottom:30px;" align="left"><v:roundrect xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w="urn:schemas-microsoft-com:office:word" href="http://{{domain}}/verify/{{verification}}" style="height:31pt; v-text-anchor:middle; width:81pt;" arcsize="143%" strokecolor="#2196F3" fillcolor="#2196F3"><w:anchorlock/><v:textbox inset="0,0,0,0"><center style="color:#ffffff; font-family:Arial, 'Helvetica Neue', Helvetica, sans-serif; font-size:16px;"><![endif]-->
+                          <a
+                            href="https://{{domain}}/verify/{{verification}}"
+                            target="_blank"
+                            style="display: block;text-decoration: none;-webkit-text-size-adjust: none;text-align: center;color: #ffffff; background-color: #2196F3; border-radius: 60px; -webkit-border-radius: 60px; -moz-border-radius: 60px; max-width: 108px; width: 48px;width: auto; border-top: 0px solid transparent; border-right: 0px solid transparent; border-bottom: 0px solid transparent; border-left: 0px solid transparent; padding-top: 5px; padding-right: 30px; padding-bottom: 5px; padding-left: 30px; font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif;mso-border-alt: none"
+                          >
+                            <span style="font-size:16px;line-height:32px;"
+                              >Verify account</span
+                            >
+                          </a>
+                          <!--[if mso]></center></v:textbox></v:roundrect></td></tr></table><![endif]-->
                         </div>
                         </div>
-                      </div>
-                      <!--[if mso]></td></tr></table><![endif]-->
 
 
+                        <!--[if mso]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding-right: 40px; padding-left: 40px; padding-top: 40px; padding-bottom: 40px;"><![endif]-->
+                        <div
+                          style="color:#555555;line-height:180%;font-family:Arial, 'Helvetica Neue', Helvetica, sans-serif; padding-right: 40px; padding-left: 40px; padding-top: 40px; padding-bottom: 40px;"
+                        >
+                          <div
+                            style="font-size:12px;line-height:22px;text-align:center;color:#555555;font-family:Arial, 'Helvetica Neue', Helvetica, sans-serif;"
+                          >
+                            <span style="font-size:14px; line-height:25px;">
+                              <a
+                                style="color:#0068A5;text-decoration: underline;"
+                                href="https://{{domain}}"
+                                target="_blank"
+                                rel="noopener"
+                                data-mce-selected="1"
+                                >{{site_name}} | Free &amp; open source URL
+                                shortener</a
+                              >
+                            </span>
+                            <br data-mce-bogus="1" />
+                          </div>
+                        </div>
+                        <!--[if mso]></td></tr></table><![endif]-->
 
 
-                      <!--[if (!mso)&(!IE)]><!-->
+                        <!--[if (!mso)&(!IE)]><!-->
+                      </div>
+                      <!--<![endif]-->
                     </div>
                     </div>
-                    <!--<![endif]-->
                   </div>
                   </div>
+                  <!--[if (mso)|(IE)]></td></tr></table></td></tr></table><![endif]-->
                 </div>
                 </div>
-                <!--[if (mso)|(IE)]></td></tr></table></td></tr></table><![endif]-->
               </div>
               </div>
             </div>
             </div>
-          </div>
-          <!--[if (mso)|(IE)]></td></tr></table><![endif]-->
-        </td>
-      </tr>
-    </tbody>
-  </table>
-  <!--[if (mso)|(IE)]></div><![endif]-->
-
-
-</body>
-
-</html>
+            <!--[if (mso)|(IE)]></td></tr></table><![endif]-->
+          </td>
+        </tr>
+      </tbody>
+    </table>
+    <!--[if (mso)|(IE)]></div><![endif]-->
+  </body>
+</html>

+ 1 - 1
server/mail/text.ts

@@ -1,5 +1,5 @@
 /* eslint-disable max-len */
 /* eslint-disable max-len */
-export const verifyMailText = `Thanks for creating an account on Kutt.it.
+export const verifyMailText = `Thanks for creating an account on {{site_name}}.
 
 
 Please verify your email address using the link below.
 Please verify your email address using the link below.