diff options
Diffstat (limited to 'controller-server')
8 files changed, 3262 insertions, 2 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/CloudTrialExpirer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/CloudTrialExpirer.java index 9358a648b43..b794cae63eb 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/CloudTrialExpirer.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/CloudTrialExpirer.java @@ -164,6 +164,8 @@ public class CloudTrialExpirer extends ControllerMaintainer { .subject(emailSubject) .with("mailMessageTemplate", "cloud-trial-notification") .with("cloudTrialMessage", emailMsg) + .with("mailTitle", emailSubject) + .with("consoleLink", controller().zoneRegistry().dashboardUrl(tenant.name())) .build()); var source = NotificationSource.from(tenant.name()); // Remove previous notification to ensure new notification is sent by email diff --git a/controller-server/src/main/resources/mail/cloud-trial-notification.vm b/controller-server/src/main/resources/mail/cloud-trial-notification.vm index 27bc9b1ad1b..c1ba394bf8e 100644 --- a/controller-server/src/main/resources/mail/cloud-trial-notification.vm +++ b/controller-server/src/main/resources/mail/cloud-trial-notification.vm @@ -1,3 +1,3 @@ <p> - $esc.html($cloudTrialMessage): + $esc.html($cloudTrialMessage) </p>
\ No newline at end of file diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/CloudTrialExpirerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/CloudTrialExpirerTest.java index b595c8a8be3..7e8237606c6 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/CloudTrialExpirerTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/CloudTrialExpirerTest.java @@ -9,6 +9,7 @@ import com.yahoo.vespa.flags.InMemoryFlagSource; import com.yahoo.vespa.flags.PermanentFlags; import com.yahoo.vespa.hosted.controller.ControllerTester; import com.yahoo.vespa.hosted.controller.api.integration.billing.PlanId; +import com.yahoo.vespa.hosted.controller.api.integration.stubs.MockMailer; import com.yahoo.vespa.hosted.controller.deployment.ApplicationPackageBuilder; import com.yahoo.vespa.hosted.controller.deployment.DeploymentTester; import com.yahoo.vespa.hosted.controller.notification.Notification; @@ -17,10 +18,15 @@ import com.yahoo.vespa.hosted.controller.tenant.LastLoginInfo; import com.yahoo.vespa.hosted.controller.tenant.Tenant; import org.junit.jupiter.api.Test; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.nio.file.StandardOpenOption; import java.time.Duration; import java.util.List; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; /** @@ -28,6 +34,8 @@ import static org.junit.jupiter.api.Assertions.assertTrue; */ public class CloudTrialExpirerTest { + private static final boolean OVERWRITE_TEST_FILES = false; + private final ControllerTester tester = new ControllerTester(SystemName.PublicCd); private final DeploymentTester deploymentTester = new DeploymentTester(tester); private final CloudTrialExpirer expirer = new CloudTrialExpirer(tester.controller(), Duration.ofMinutes(5)); @@ -94,30 +102,50 @@ public class CloudTrialExpirerTest { } @Test - void queues_trial_notification_based_on_account_age() { + void queues_trial_notification_based_on_account_age() throws IOException { var clock = (ManualClock)tester.controller().clock(); + var mailer = (MockMailer) tester.serviceRegistry().mailer(); var tenant = TenantName.from("trial-tenant"); ((InMemoryFlagSource) tester.controller().flagSource()) .withBooleanFlag(Flags.CLOUD_TRIAL_NOTIFICATIONS.id(), true); registerTenant(tenant.value(), "trial", Duration.ZERO); assertEquals(0.0, expirer.maintain()); assertEquals("Welcome to Vespa Cloud", lastAccountLevelNotificationTitle(tenant)); + assertLastEmailEquals(mailer, "welcome.html"); clock.advance(Duration.ofDays(7)); assertEquals(0.0, expirer.maintain()); assertEquals("How is your Vespa Cloud trial going?", lastAccountLevelNotificationTitle(tenant)); + assertLastEmailEquals(mailer, "trial-reminder.html"); clock.advance(Duration.ofDays(5)); assertEquals(0.0, expirer.maintain()); assertEquals("Your Vespa Cloud trial expires in 2 days", lastAccountLevelNotificationTitle(tenant)); + assertLastEmailEquals(mailer, "trial-expiring-soon.html"); clock.advance(Duration.ofDays(1)); assertEquals(0.0, expirer.maintain()); assertEquals("Your Vespa Cloud trial expires tomorrow", lastAccountLevelNotificationTitle(tenant)); + assertLastEmailEquals(mailer, "trial-expiring-immediately.html"); clock.advance(Duration.ofDays(2)); assertEquals(0.0, expirer.maintain()); assertEquals("Your Vespa Cloud trial has expired", lastAccountLevelNotificationTitle(tenant)); + assertLastEmailEquals(mailer, "trial-expired.html"); + } + + private void assertLastEmailEquals(MockMailer mailer, String expectedContentFile) throws IOException { + var mails = mailer.inbox("dev-trial-tenant"); + assertFalse(mails.isEmpty()); + var content = mails.get(mails.size() - 1).htmlMessage().orElseThrow(); + var path = Paths.get("src/test/resources/mail/" + expectedContentFile); + if (OVERWRITE_TEST_FILES) { + Files.write(path, content.getBytes(), + StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING, StandardOpenOption.WRITE); + } else { + var expectedContent = Files.readString(path); + assertEquals(expectedContent, content); + } } private void registerTenant(String tenantName, String plan, Duration timeSinceLastLogin) { diff --git a/controller-server/src/test/resources/mail/trial-expired.html b/controller-server/src/test/resources/mail/trial-expired.html new file mode 100644 index 00000000000..4e6fda61b33 --- /dev/null +++ b/controller-server/src/test/resources/mail/trial-expired.html @@ -0,0 +1,646 @@ +<!DOCTYPE html> +<html + xmlns="http://www.w3.org/1999/xhtml" + xmlns:v="urn:schemas-microsoft-com:vml" + xmlns:o="urn:schemas-microsoft-com:office:office" +> + <head> + <title></title> + <!--[if !mso]><!--> + <meta http-equiv="X-UA-Compatible" content="IE=edge" /> + <!--<![endif]--> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> + <meta name="viewport" content="width=device-width,initial-scale=1" /> + <style type="text/css"> + #outlook a { + padding: 0; + } + + body { + margin: 0; + padding: 0; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; + } + + table, + td { + border-collapse: collapse; + mso-table-lspace: 0pt; + mso-table-rspace: 0pt; + } + + img { + border: 0; + height: auto; + line-height: 100%; + outline: none; + text-decoration: none; + -ms-interpolation-mode: bicubic; + } + + p { + display: block; + margin: 13px 0; + } + </style> + <!--[if mso]> + <noscript> + <xml> + <o:OfficeDocumentSettings> + <o:AllowPNG /> + <o:PixelsPerInch>96</o:PixelsPerInch> + </o:OfficeDocumentSettings> + </xml> + </noscript> + <![endif]--> + <!--[if lte mso 11]> + <style type="text/css"> + .mj-outlook-group-fix { + width: 100% !important; + } + </style> + <![endif]--> + <!--[if !mso]><!--> + <link + href="https://fonts.googleapis.com/css?family=Open Sans" + rel="stylesheet" + type="text/css" + /> + <style type="text/css"> + @import url(https://fonts.googleapis.com/css?family=Open Sans); + </style> + <!--<![endif]--> + <style type="text/css"> + @media only screen and (min-width: 480px) { + .mj-column-per-100 { + width: 100% !important; + max-width: 100%; + } + } + </style> + <style media="screen and (min-width:480px)"> + .moz-text-html .mj-column-per-100 { + width: 100% !important; + max-width: 100%; + } + </style> + <style type="text/css"> + [owa] .mj-column-per-100 { + width: 100% !important; + max-width: 100%; + } + </style> + <style type="text/css"> + @media only screen and (max-width: 480px) { + table.mj-full-width-mobile { + width: 100% !important; + } + + td.mj-full-width-mobile { + width: auto !important; + } + } + </style> + </head> + + <body style="word-spacing: normal; background-color: #f2f7fa"> + <div style="background-color: #f2f7fa"> + <!--[if mso | IE]><table align="center" border="0" cellpadding="0" cellspacing="0" class="" role="presentation" style="width:600px;" width="600" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]--> + <div style="margin: 0px auto; max-width: 600px"> + <table + align="center" + border="0" + cellpadding="0" + cellspacing="0" + role="presentation" + style="width: 100%" + > + <tbody> + <tr> + <td + style=" + direction: ltr; + font-size: 0px; + padding: 20px 0px 20px 0px; + padding-bottom: 0px; + padding-top: 0px; + text-align: center; + " + > + <!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" style="vertical-align:top;width:600px;" ><![endif]--> + <div + class="mj-column-per-100 mj-outlook-group-fix" + style=" + font-size: 0px; + text-align: left; + direction: ltr; + display: inline-block; + vertical-align: top; + width: 100%; + " + > + <table + border="0" + cellpadding="0" + cellspacing="0" + role="presentation" + style="vertical-align: top" + width="100%" + > + <tbody> + <tr> + <td + align="left" + style=" + font-size: 0px; + padding: 0px 0px 0px 25px; + padding-top: 0px; + padding-bottom: 0px; + word-break: break-word; + " + > + <div + style=" + font-family: Open Sans, Helvetica, Arial, + sans-serif; + font-size: 11px; + line-height: 22px; + text-align: left; + color: #797e82; + " + > + <br /> + </div> + </td> + </tr> + </tbody> + </table> + </div> + <!--[if mso | IE]></td></tr></table><![endif]--> + </td> + </tr> + </tbody> + </table> + </div> + <!--[if mso | IE]></td></tr></table><table align="center" border="0" cellpadding="0" cellspacing="0" class="" role="presentation" style="width:600px;" width="600" bgcolor="#ffffff" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]--> + <div + style=" + background: #ffffff; + background-color: #ffffff; + margin: 0px auto; + max-width: 600px; + " + > + <table + align="center" + border="0" + cellpadding="0" + cellspacing="0" + role="presentation" + style="background: #ffffff; background-color: #ffffff; width: 100%" + > + <tbody> + <tr> + <td + style=" + direction: ltr; + font-size: 0px; + padding: 20px 0; + padding-bottom: 0px; + padding-left: 0px; + padding-right: 0px; + padding-top: 0px; + text-align: center; + " + > + <!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" style="vertical-align:top;width:600px;" ><![endif]--> + <div + class="mj-column-per-100 mj-outlook-group-fix" + style=" + font-size: 0px; + text-align: left; + direction: ltr; + display: inline-block; + vertical-align: top; + width: 100%; + " + > + <table + border="0" + cellpadding="0" + cellspacing="0" + role="presentation" + style="vertical-align: top" + width="100%" + > + <tbody> + <tr> + <td + align="center" + style=" + font-size: 0px; + padding: 10px 25px; + padding-top: 0px; + padding-right: 0px; + padding-bottom: 40px; + padding-left: 0px; + word-break: break-word; + " + > + <p + style=" + border-top: solid 8px #005a8e; + font-size: 1px; + margin: 0px auto; + width: 100%; + " + ></p> + <!--[if mso | IE + ]><table + align="center" + border="0" + cellpadding="0" + cellspacing="0" + style=" + border-top: solid 8px #005a8e; + font-size: 1px; + margin: 0px auto; + width: 600px; + " + role="presentation" + width="600px" + > + <tr> + <td style="height: 0; line-height: 0"> + + </td> + </tr> + </table><! + [endif]--> + </td> + </tr> + <tr> + <td + align="center" + style=" + font-size: 0px; + padding: 10px 25px; + padding-top: 0px; + padding-bottom: 0px; + word-break: break-word; + " + > + <table + border="0" + cellpadding="0" + cellspacing="0" + role="presentation" + style=" + border-collapse: collapse; + border-spacing: 0px; + " + > + <tbody> + <tr> + <td style="width: 121px"> + <img + alt="" + height="auto" + src="https://data.vespa.oath.cloud/assets/vespa-cloud-logo.png" + style=" + border: none; + display: block; + outline: none; + text-decoration: none; + height: auto; + width: 100%; + font-size: 13px; + " + width="121" + /> + </td> + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> + </table> + </div> + <!--[if mso | IE]></td></tr></table><![endif]--> + </td> + </tr> + </tbody> + </table> + </div> + <!--[if mso | IE]></td></tr></table><table align="center" border="0" cellpadding="0" cellspacing="0" class="" role="presentation" style="width:600px;" width="600" bgcolor="#ffffff" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]--> + <div + style=" + background: #ffffff; + background-color: #ffffff; + margin: 0px auto; + max-width: 600px; + " + > + <table + align="center" + border="0" + cellpadding="0" + cellspacing="0" + role="presentation" + style="background: #ffffff; background-color: #ffffff; width: 100%" + > + <tbody> + <tr> + <td + style=" + direction: ltr; + font-size: 0px; + padding: 20px 0px 20px 0px; + padding-bottom: 70px; + padding-top: 30px; + text-align: center; + " + > + <!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" style="vertical-align:top;width:600px;" ><![endif]--> + <div + class="mj-column-per-100 mj-outlook-group-fix" + style=" + font-size: 0px; + text-align: left; + direction: ltr; + display: inline-block; + vertical-align: top; + width: 100%; + " + > + <table + border="0" + cellpadding="0" + cellspacing="0" + role="presentation" + style="vertical-align: top" + width="100%" + > + +<tbody> +<tr> + <td + align="left" + style=" + font-size: 0px; + padding: 0px 25px 0px 25px; + padding-top: 0px; + padding-right: 50px; + padding-bottom: 0px; + padding-left: 50px; + word-break: break-word; + " + > + <div + style=" + font-family: Open Sans, Helvetica, Arial, + sans-serif; + font-size: 13px; + line-height: 22px; + text-align: left; + color: #797e82; + " + > + <h1 + style=" + text-align: center; + color: #000000; + line-height: 32px; + " + > + Your Vespa Cloud trial has expired + </h1> + </div> + </td> +</tr> +<tr> + <td + align="left" + style=" + font-size: 0px; + padding: 0px 25px 0px 25px; + padding-top: 0px; + padding-right: 50px; + padding-bottom: 0px; + padding-left: 50px; + word-break: break-word; + " + > + <div + style=" + font-family: Open Sans, Helvetica, Arial, + sans-serif; + font-size: 13px; + line-height: 22px; + text-align: left; + color: #797e82; + " + > + +<p> + Your Vespa Cloud trial has expired. Please reach out to us if you have any questions or feedback. +</p> + </div> + </td> +</tr> +<tr> + <td + align="center" + vertical-align="middle" + style=" + font-size: 0px; + padding: 10px 25px; + padding-top: 20px; + padding-bottom: 20px; + word-break: break-word; + " + > + <table + border="0" + cellpadding="0" + cellspacing="0" + role="presentation" + style="border-collapse: separate; line-height: 100%" + > + <tbody> + <tr> + <td + align="center" + bgcolor="#005A8E" + role="presentation" + style=" + border: none; + border-radius: 100px; + cursor: auto; + mso-padding-alt: 15px 25px 15px 25px; + background: #005a8e; + " + valign="middle" + > + <a + href="https://dashboard.tld/trial-tenant" + style=" + display: inline-block; + background: #005a8e; + color: #ffffff; + font-family: Open Sans, Helvetica, Arial, + sans-serif; + font-size: 13px; + font-weight: normal; + line-height: 120%; + margin: 0; + text-decoration: none; + text-transform: none; + padding: 15px 25px 15px 25px; + mso-padding-alt: 0px; + border-radius: 100px; + " + target="_blank" + ><b style="font-weight: 700" + ><b style="font-weight: 700" + >Go to Console</b + ></b + ></a + > + </td> + </tr> + </tbody> + </table> + </td> +</tr> +</tbody> + </table> + </div> + <!--[if mso | IE]></td></tr></table><![endif]--> + </td> + </tr> + </tbody> + </table> + </div> + <!--[if mso | IE]></td></tr></table><table align="center" border="0" cellpadding="0" cellspacing="0" class="" role="presentation" style="width:600px;" width="600" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]--> + <div style="margin: 0px auto; max-width: 600px"> + <table + align="center" + border="0" + cellpadding="0" + cellspacing="0" + role="presentation" + style="width: 100%" + > + <tbody> + <tr> + <td + style=" + direction: ltr; + font-size: 0px; + padding: 20px 0px 20px 0px; + padding-bottom: 0px; + padding-top: 20px; + text-align: center; + " + > + <!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" style="vertical-align:top;width:600px;" ><![endif]--> + <div + class="mj-column-per-100 mj-outlook-group-fix" + style=" + font-size: 0px; + text-align: left; + direction: ltr; + display: inline-block; + vertical-align: top; + width: 100%; + " + > + <table + border="0" + cellpadding="0" + cellspacing="0" + role="presentation" + style="vertical-align: top" + width="100%" + > + <tbody> + <tr> + <td + align="center" + style=" + font-size: 0px; + padding: 0px 20px 0px 20px; + padding-top: 0px; + padding-bottom: 0px; + word-break: break-word; + " + > + <div + style=" + font-family: Open Sans, Helvetica, Arial, + sans-serif; + font-size: 11px; + line-height: 22px; + text-align: center; + color: #797e82; + " + > + <p style="margin: 10px 0"> + <a + target="_blank" + rel="noopener noreferrer" + style="color: #005a8e" + href="https://legal.yahoo.com/xw/en/yahoo/privacy/topic/b2bprivacypolicy/index.html" + ><span style="color: #005a8e" + >Yahoo Privacy Policy</span + ></a + ><span style="color: #797e82" + > | </span + ><a + target="_blank" + rel="noopener noreferrer" + style="color: #005a8e" + href="https://dashboard.tld/terms-of-service-trial.html" + ><span style="color: #005a8e" + >Terms of Service</span + ></a + ><span style="color: #797e82" + > | </span + ><a + target="_blank" + rel="noopener noreferrer" + style="color: #005a8e" + href="https://dashboard.tld/support" + ><span style="color: #005a8e">Support</span></a + > + </p> + <p style="margin: 10px 0"> + <a + target="_blank" + rel="noopener noreferrer" + style="color: inherit; text-decoration: none" + href="https://dashboard.tld/tenant/trial-tenant/account/notifications" + >Click + <span style="color: #005a8e"><u>here</u></span> + to manage your notifications setting.</a + ><br /> + </p> + </div> + </td> + </tr> + </tbody> + </table> + </div> + <!--[if mso | IE]></td></tr></table><![endif]--> + </td> + </tr> + </tbody> + </table> + </div> + <!--[if mso | IE]></td></tr></table><![endif]--> + </div> + </body> +</html> diff --git a/controller-server/src/test/resources/mail/trial-expiring-immediately.html b/controller-server/src/test/resources/mail/trial-expiring-immediately.html new file mode 100644 index 00000000000..4b16619fe9c --- /dev/null +++ b/controller-server/src/test/resources/mail/trial-expiring-immediately.html @@ -0,0 +1,646 @@ +<!DOCTYPE html> +<html + xmlns="http://www.w3.org/1999/xhtml" + xmlns:v="urn:schemas-microsoft-com:vml" + xmlns:o="urn:schemas-microsoft-com:office:office" +> + <head> + <title></title> + <!--[if !mso]><!--> + <meta http-equiv="X-UA-Compatible" content="IE=edge" /> + <!--<![endif]--> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> + <meta name="viewport" content="width=device-width,initial-scale=1" /> + <style type="text/css"> + #outlook a { + padding: 0; + } + + body { + margin: 0; + padding: 0; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; + } + + table, + td { + border-collapse: collapse; + mso-table-lspace: 0pt; + mso-table-rspace: 0pt; + } + + img { + border: 0; + height: auto; + line-height: 100%; + outline: none; + text-decoration: none; + -ms-interpolation-mode: bicubic; + } + + p { + display: block; + margin: 13px 0; + } + </style> + <!--[if mso]> + <noscript> + <xml> + <o:OfficeDocumentSettings> + <o:AllowPNG /> + <o:PixelsPerInch>96</o:PixelsPerInch> + </o:OfficeDocumentSettings> + </xml> + </noscript> + <![endif]--> + <!--[if lte mso 11]> + <style type="text/css"> + .mj-outlook-group-fix { + width: 100% !important; + } + </style> + <![endif]--> + <!--[if !mso]><!--> + <link + href="https://fonts.googleapis.com/css?family=Open Sans" + rel="stylesheet" + type="text/css" + /> + <style type="text/css"> + @import url(https://fonts.googleapis.com/css?family=Open Sans); + </style> + <!--<![endif]--> + <style type="text/css"> + @media only screen and (min-width: 480px) { + .mj-column-per-100 { + width: 100% !important; + max-width: 100%; + } + } + </style> + <style media="screen and (min-width:480px)"> + .moz-text-html .mj-column-per-100 { + width: 100% !important; + max-width: 100%; + } + </style> + <style type="text/css"> + [owa] .mj-column-per-100 { + width: 100% !important; + max-width: 100%; + } + </style> + <style type="text/css"> + @media only screen and (max-width: 480px) { + table.mj-full-width-mobile { + width: 100% !important; + } + + td.mj-full-width-mobile { + width: auto !important; + } + } + </style> + </head> + + <body style="word-spacing: normal; background-color: #f2f7fa"> + <div style="background-color: #f2f7fa"> + <!--[if mso | IE]><table align="center" border="0" cellpadding="0" cellspacing="0" class="" role="presentation" style="width:600px;" width="600" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]--> + <div style="margin: 0px auto; max-width: 600px"> + <table + align="center" + border="0" + cellpadding="0" + cellspacing="0" + role="presentation" + style="width: 100%" + > + <tbody> + <tr> + <td + style=" + direction: ltr; + font-size: 0px; + padding: 20px 0px 20px 0px; + padding-bottom: 0px; + padding-top: 0px; + text-align: center; + " + > + <!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" style="vertical-align:top;width:600px;" ><![endif]--> + <div + class="mj-column-per-100 mj-outlook-group-fix" + style=" + font-size: 0px; + text-align: left; + direction: ltr; + display: inline-block; + vertical-align: top; + width: 100%; + " + > + <table + border="0" + cellpadding="0" + cellspacing="0" + role="presentation" + style="vertical-align: top" + width="100%" + > + <tbody> + <tr> + <td + align="left" + style=" + font-size: 0px; + padding: 0px 0px 0px 25px; + padding-top: 0px; + padding-bottom: 0px; + word-break: break-word; + " + > + <div + style=" + font-family: Open Sans, Helvetica, Arial, + sans-serif; + font-size: 11px; + line-height: 22px; + text-align: left; + color: #797e82; + " + > + <br /> + </div> + </td> + </tr> + </tbody> + </table> + </div> + <!--[if mso | IE]></td></tr></table><![endif]--> + </td> + </tr> + </tbody> + </table> + </div> + <!--[if mso | IE]></td></tr></table><table align="center" border="0" cellpadding="0" cellspacing="0" class="" role="presentation" style="width:600px;" width="600" bgcolor="#ffffff" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]--> + <div + style=" + background: #ffffff; + background-color: #ffffff; + margin: 0px auto; + max-width: 600px; + " + > + <table + align="center" + border="0" + cellpadding="0" + cellspacing="0" + role="presentation" + style="background: #ffffff; background-color: #ffffff; width: 100%" + > + <tbody> + <tr> + <td + style=" + direction: ltr; + font-size: 0px; + padding: 20px 0; + padding-bottom: 0px; + padding-left: 0px; + padding-right: 0px; + padding-top: 0px; + text-align: center; + " + > + <!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" style="vertical-align:top;width:600px;" ><![endif]--> + <div + class="mj-column-per-100 mj-outlook-group-fix" + style=" + font-size: 0px; + text-align: left; + direction: ltr; + display: inline-block; + vertical-align: top; + width: 100%; + " + > + <table + border="0" + cellpadding="0" + cellspacing="0" + role="presentation" + style="vertical-align: top" + width="100%" + > + <tbody> + <tr> + <td + align="center" + style=" + font-size: 0px; + padding: 10px 25px; + padding-top: 0px; + padding-right: 0px; + padding-bottom: 40px; + padding-left: 0px; + word-break: break-word; + " + > + <p + style=" + border-top: solid 8px #005a8e; + font-size: 1px; + margin: 0px auto; + width: 100%; + " + ></p> + <!--[if mso | IE + ]><table + align="center" + border="0" + cellpadding="0" + cellspacing="0" + style=" + border-top: solid 8px #005a8e; + font-size: 1px; + margin: 0px auto; + width: 600px; + " + role="presentation" + width="600px" + > + <tr> + <td style="height: 0; line-height: 0"> + + </td> + </tr> + </table><! + [endif]--> + </td> + </tr> + <tr> + <td + align="center" + style=" + font-size: 0px; + padding: 10px 25px; + padding-top: 0px; + padding-bottom: 0px; + word-break: break-word; + " + > + <table + border="0" + cellpadding="0" + cellspacing="0" + role="presentation" + style=" + border-collapse: collapse; + border-spacing: 0px; + " + > + <tbody> + <tr> + <td style="width: 121px"> + <img + alt="" + height="auto" + src="https://data.vespa.oath.cloud/assets/vespa-cloud-logo.png" + style=" + border: none; + display: block; + outline: none; + text-decoration: none; + height: auto; + width: 100%; + font-size: 13px; + " + width="121" + /> + </td> + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> + </table> + </div> + <!--[if mso | IE]></td></tr></table><![endif]--> + </td> + </tr> + </tbody> + </table> + </div> + <!--[if mso | IE]></td></tr></table><table align="center" border="0" cellpadding="0" cellspacing="0" class="" role="presentation" style="width:600px;" width="600" bgcolor="#ffffff" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]--> + <div + style=" + background: #ffffff; + background-color: #ffffff; + margin: 0px auto; + max-width: 600px; + " + > + <table + align="center" + border="0" + cellpadding="0" + cellspacing="0" + role="presentation" + style="background: #ffffff; background-color: #ffffff; width: 100%" + > + <tbody> + <tr> + <td + style=" + direction: ltr; + font-size: 0px; + padding: 20px 0px 20px 0px; + padding-bottom: 70px; + padding-top: 30px; + text-align: center; + " + > + <!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" style="vertical-align:top;width:600px;" ><![endif]--> + <div + class="mj-column-per-100 mj-outlook-group-fix" + style=" + font-size: 0px; + text-align: left; + direction: ltr; + display: inline-block; + vertical-align: top; + width: 100%; + " + > + <table + border="0" + cellpadding="0" + cellspacing="0" + role="presentation" + style="vertical-align: top" + width="100%" + > + +<tbody> +<tr> + <td + align="left" + style=" + font-size: 0px; + padding: 0px 25px 0px 25px; + padding-top: 0px; + padding-right: 50px; + padding-bottom: 0px; + padding-left: 50px; + word-break: break-word; + " + > + <div + style=" + font-family: Open Sans, Helvetica, Arial, + sans-serif; + font-size: 13px; + line-height: 22px; + text-align: left; + color: #797e82; + " + > + <h1 + style=" + text-align: center; + color: #000000; + line-height: 32px; + " + > + Your Vespa Cloud trial expires tomorrow + </h1> + </div> + </td> +</tr> +<tr> + <td + align="left" + style=" + font-size: 0px; + padding: 0px 25px 0px 25px; + padding-top: 0px; + padding-right: 50px; + padding-bottom: 0px; + padding-left: 50px; + word-break: break-word; + " + > + <div + style=" + font-family: Open Sans, Helvetica, Arial, + sans-serif; + font-size: 13px; + line-height: 22px; + text-align: left; + color: #797e82; + " + > + +<p> + Your Vespa Cloud trial expires tomorrow. Please reach out to us if you have any questions or feedback. +</p> + </div> + </td> +</tr> +<tr> + <td + align="center" + vertical-align="middle" + style=" + font-size: 0px; + padding: 10px 25px; + padding-top: 20px; + padding-bottom: 20px; + word-break: break-word; + " + > + <table + border="0" + cellpadding="0" + cellspacing="0" + role="presentation" + style="border-collapse: separate; line-height: 100%" + > + <tbody> + <tr> + <td + align="center" + bgcolor="#005A8E" + role="presentation" + style=" + border: none; + border-radius: 100px; + cursor: auto; + mso-padding-alt: 15px 25px 15px 25px; + background: #005a8e; + " + valign="middle" + > + <a + href="https://dashboard.tld/trial-tenant" + style=" + display: inline-block; + background: #005a8e; + color: #ffffff; + font-family: Open Sans, Helvetica, Arial, + sans-serif; + font-size: 13px; + font-weight: normal; + line-height: 120%; + margin: 0; + text-decoration: none; + text-transform: none; + padding: 15px 25px 15px 25px; + mso-padding-alt: 0px; + border-radius: 100px; + " + target="_blank" + ><b style="font-weight: 700" + ><b style="font-weight: 700" + >Go to Console</b + ></b + ></a + > + </td> + </tr> + </tbody> + </table> + </td> +</tr> +</tbody> + </table> + </div> + <!--[if mso | IE]></td></tr></table><![endif]--> + </td> + </tr> + </tbody> + </table> + </div> + <!--[if mso | IE]></td></tr></table><table align="center" border="0" cellpadding="0" cellspacing="0" class="" role="presentation" style="width:600px;" width="600" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]--> + <div style="margin: 0px auto; max-width: 600px"> + <table + align="center" + border="0" + cellpadding="0" + cellspacing="0" + role="presentation" + style="width: 100%" + > + <tbody> + <tr> + <td + style=" + direction: ltr; + font-size: 0px; + padding: 20px 0px 20px 0px; + padding-bottom: 0px; + padding-top: 20px; + text-align: center; + " + > + <!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" style="vertical-align:top;width:600px;" ><![endif]--> + <div + class="mj-column-per-100 mj-outlook-group-fix" + style=" + font-size: 0px; + text-align: left; + direction: ltr; + display: inline-block; + vertical-align: top; + width: 100%; + " + > + <table + border="0" + cellpadding="0" + cellspacing="0" + role="presentation" + style="vertical-align: top" + width="100%" + > + <tbody> + <tr> + <td + align="center" + style=" + font-size: 0px; + padding: 0px 20px 0px 20px; + padding-top: 0px; + padding-bottom: 0px; + word-break: break-word; + " + > + <div + style=" + font-family: Open Sans, Helvetica, Arial, + sans-serif; + font-size: 11px; + line-height: 22px; + text-align: center; + color: #797e82; + " + > + <p style="margin: 10px 0"> + <a + target="_blank" + rel="noopener noreferrer" + style="color: #005a8e" + href="https://legal.yahoo.com/xw/en/yahoo/privacy/topic/b2bprivacypolicy/index.html" + ><span style="color: #005a8e" + >Yahoo Privacy Policy</span + ></a + ><span style="color: #797e82" + > | </span + ><a + target="_blank" + rel="noopener noreferrer" + style="color: #005a8e" + href="https://dashboard.tld/terms-of-service-trial.html" + ><span style="color: #005a8e" + >Terms of Service</span + ></a + ><span style="color: #797e82" + > | </span + ><a + target="_blank" + rel="noopener noreferrer" + style="color: #005a8e" + href="https://dashboard.tld/support" + ><span style="color: #005a8e">Support</span></a + > + </p> + <p style="margin: 10px 0"> + <a + target="_blank" + rel="noopener noreferrer" + style="color: inherit; text-decoration: none" + href="https://dashboard.tld/tenant/trial-tenant/account/notifications" + >Click + <span style="color: #005a8e"><u>here</u></span> + to manage your notifications setting.</a + ><br /> + </p> + </div> + </td> + </tr> + </tbody> + </table> + </div> + <!--[if mso | IE]></td></tr></table><![endif]--> + </td> + </tr> + </tbody> + </table> + </div> + <!--[if mso | IE]></td></tr></table><![endif]--> + </div> + </body> +</html> diff --git a/controller-server/src/test/resources/mail/trial-expiring-soon.html b/controller-server/src/test/resources/mail/trial-expiring-soon.html new file mode 100644 index 00000000000..b4c85173171 --- /dev/null +++ b/controller-server/src/test/resources/mail/trial-expiring-soon.html @@ -0,0 +1,646 @@ +<!DOCTYPE html> +<html + xmlns="http://www.w3.org/1999/xhtml" + xmlns:v="urn:schemas-microsoft-com:vml" + xmlns:o="urn:schemas-microsoft-com:office:office" +> + <head> + <title></title> + <!--[if !mso]><!--> + <meta http-equiv="X-UA-Compatible" content="IE=edge" /> + <!--<![endif]--> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> + <meta name="viewport" content="width=device-width,initial-scale=1" /> + <style type="text/css"> + #outlook a { + padding: 0; + } + + body { + margin: 0; + padding: 0; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; + } + + table, + td { + border-collapse: collapse; + mso-table-lspace: 0pt; + mso-table-rspace: 0pt; + } + + img { + border: 0; + height: auto; + line-height: 100%; + outline: none; + text-decoration: none; + -ms-interpolation-mode: bicubic; + } + + p { + display: block; + margin: 13px 0; + } + </style> + <!--[if mso]> + <noscript> + <xml> + <o:OfficeDocumentSettings> + <o:AllowPNG /> + <o:PixelsPerInch>96</o:PixelsPerInch> + </o:OfficeDocumentSettings> + </xml> + </noscript> + <![endif]--> + <!--[if lte mso 11]> + <style type="text/css"> + .mj-outlook-group-fix { + width: 100% !important; + } + </style> + <![endif]--> + <!--[if !mso]><!--> + <link + href="https://fonts.googleapis.com/css?family=Open Sans" + rel="stylesheet" + type="text/css" + /> + <style type="text/css"> + @import url(https://fonts.googleapis.com/css?family=Open Sans); + </style> + <!--<![endif]--> + <style type="text/css"> + @media only screen and (min-width: 480px) { + .mj-column-per-100 { + width: 100% !important; + max-width: 100%; + } + } + </style> + <style media="screen and (min-width:480px)"> + .moz-text-html .mj-column-per-100 { + width: 100% !important; + max-width: 100%; + } + </style> + <style type="text/css"> + [owa] .mj-column-per-100 { + width: 100% !important; + max-width: 100%; + } + </style> + <style type="text/css"> + @media only screen and (max-width: 480px) { + table.mj-full-width-mobile { + width: 100% !important; + } + + td.mj-full-width-mobile { + width: auto !important; + } + } + </style> + </head> + + <body style="word-spacing: normal; background-color: #f2f7fa"> + <div style="background-color: #f2f7fa"> + <!--[if mso | IE]><table align="center" border="0" cellpadding="0" cellspacing="0" class="" role="presentation" style="width:600px;" width="600" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]--> + <div style="margin: 0px auto; max-width: 600px"> + <table + align="center" + border="0" + cellpadding="0" + cellspacing="0" + role="presentation" + style="width: 100%" + > + <tbody> + <tr> + <td + style=" + direction: ltr; + font-size: 0px; + padding: 20px 0px 20px 0px; + padding-bottom: 0px; + padding-top: 0px; + text-align: center; + " + > + <!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" style="vertical-align:top;width:600px;" ><![endif]--> + <div + class="mj-column-per-100 mj-outlook-group-fix" + style=" + font-size: 0px; + text-align: left; + direction: ltr; + display: inline-block; + vertical-align: top; + width: 100%; + " + > + <table + border="0" + cellpadding="0" + cellspacing="0" + role="presentation" + style="vertical-align: top" + width="100%" + > + <tbody> + <tr> + <td + align="left" + style=" + font-size: 0px; + padding: 0px 0px 0px 25px; + padding-top: 0px; + padding-bottom: 0px; + word-break: break-word; + " + > + <div + style=" + font-family: Open Sans, Helvetica, Arial, + sans-serif; + font-size: 11px; + line-height: 22px; + text-align: left; + color: #797e82; + " + > + <br /> + </div> + </td> + </tr> + </tbody> + </table> + </div> + <!--[if mso | IE]></td></tr></table><![endif]--> + </td> + </tr> + </tbody> + </table> + </div> + <!--[if mso | IE]></td></tr></table><table align="center" border="0" cellpadding="0" cellspacing="0" class="" role="presentation" style="width:600px;" width="600" bgcolor="#ffffff" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]--> + <div + style=" + background: #ffffff; + background-color: #ffffff; + margin: 0px auto; + max-width: 600px; + " + > + <table + align="center" + border="0" + cellpadding="0" + cellspacing="0" + role="presentation" + style="background: #ffffff; background-color: #ffffff; width: 100%" + > + <tbody> + <tr> + <td + style=" + direction: ltr; + font-size: 0px; + padding: 20px 0; + padding-bottom: 0px; + padding-left: 0px; + padding-right: 0px; + padding-top: 0px; + text-align: center; + " + > + <!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" style="vertical-align:top;width:600px;" ><![endif]--> + <div + class="mj-column-per-100 mj-outlook-group-fix" + style=" + font-size: 0px; + text-align: left; + direction: ltr; + display: inline-block; + vertical-align: top; + width: 100%; + " + > + <table + border="0" + cellpadding="0" + cellspacing="0" + role="presentation" + style="vertical-align: top" + width="100%" + > + <tbody> + <tr> + <td + align="center" + style=" + font-size: 0px; + padding: 10px 25px; + padding-top: 0px; + padding-right: 0px; + padding-bottom: 40px; + padding-left: 0px; + word-break: break-word; + " + > + <p + style=" + border-top: solid 8px #005a8e; + font-size: 1px; + margin: 0px auto; + width: 100%; + " + ></p> + <!--[if mso | IE + ]><table + align="center" + border="0" + cellpadding="0" + cellspacing="0" + style=" + border-top: solid 8px #005a8e; + font-size: 1px; + margin: 0px auto; + width: 600px; + " + role="presentation" + width="600px" + > + <tr> + <td style="height: 0; line-height: 0"> + + </td> + </tr> + </table><! + [endif]--> + </td> + </tr> + <tr> + <td + align="center" + style=" + font-size: 0px; + padding: 10px 25px; + padding-top: 0px; + padding-bottom: 0px; + word-break: break-word; + " + > + <table + border="0" + cellpadding="0" + cellspacing="0" + role="presentation" + style=" + border-collapse: collapse; + border-spacing: 0px; + " + > + <tbody> + <tr> + <td style="width: 121px"> + <img + alt="" + height="auto" + src="https://data.vespa.oath.cloud/assets/vespa-cloud-logo.png" + style=" + border: none; + display: block; + outline: none; + text-decoration: none; + height: auto; + width: 100%; + font-size: 13px; + " + width="121" + /> + </td> + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> + </table> + </div> + <!--[if mso | IE]></td></tr></table><![endif]--> + </td> + </tr> + </tbody> + </table> + </div> + <!--[if mso | IE]></td></tr></table><table align="center" border="0" cellpadding="0" cellspacing="0" class="" role="presentation" style="width:600px;" width="600" bgcolor="#ffffff" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]--> + <div + style=" + background: #ffffff; + background-color: #ffffff; + margin: 0px auto; + max-width: 600px; + " + > + <table + align="center" + border="0" + cellpadding="0" + cellspacing="0" + role="presentation" + style="background: #ffffff; background-color: #ffffff; width: 100%" + > + <tbody> + <tr> + <td + style=" + direction: ltr; + font-size: 0px; + padding: 20px 0px 20px 0px; + padding-bottom: 70px; + padding-top: 30px; + text-align: center; + " + > + <!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" style="vertical-align:top;width:600px;" ><![endif]--> + <div + class="mj-column-per-100 mj-outlook-group-fix" + style=" + font-size: 0px; + text-align: left; + direction: ltr; + display: inline-block; + vertical-align: top; + width: 100%; + " + > + <table + border="0" + cellpadding="0" + cellspacing="0" + role="presentation" + style="vertical-align: top" + width="100%" + > + +<tbody> +<tr> + <td + align="left" + style=" + font-size: 0px; + padding: 0px 25px 0px 25px; + padding-top: 0px; + padding-right: 50px; + padding-bottom: 0px; + padding-left: 50px; + word-break: break-word; + " + > + <div + style=" + font-family: Open Sans, Helvetica, Arial, + sans-serif; + font-size: 13px; + line-height: 22px; + text-align: left; + color: #797e82; + " + > + <h1 + style=" + text-align: center; + color: #000000; + line-height: 32px; + " + > + Your Vespa Cloud trial expires in 2 days + </h1> + </div> + </td> +</tr> +<tr> + <td + align="left" + style=" + font-size: 0px; + padding: 0px 25px 0px 25px; + padding-top: 0px; + padding-right: 50px; + padding-bottom: 0px; + padding-left: 50px; + word-break: break-word; + " + > + <div + style=" + font-family: Open Sans, Helvetica, Arial, + sans-serif; + font-size: 13px; + line-height: 22px; + text-align: left; + color: #797e82; + " + > + +<p> + Your Vespa Cloud trial expires in 2 days. Please reach out to us if you have any questions or feedback. +</p> + </div> + </td> +</tr> +<tr> + <td + align="center" + vertical-align="middle" + style=" + font-size: 0px; + padding: 10px 25px; + padding-top: 20px; + padding-bottom: 20px; + word-break: break-word; + " + > + <table + border="0" + cellpadding="0" + cellspacing="0" + role="presentation" + style="border-collapse: separate; line-height: 100%" + > + <tbody> + <tr> + <td + align="center" + bgcolor="#005A8E" + role="presentation" + style=" + border: none; + border-radius: 100px; + cursor: auto; + mso-padding-alt: 15px 25px 15px 25px; + background: #005a8e; + " + valign="middle" + > + <a + href="https://dashboard.tld/trial-tenant" + style=" + display: inline-block; + background: #005a8e; + color: #ffffff; + font-family: Open Sans, Helvetica, Arial, + sans-serif; + font-size: 13px; + font-weight: normal; + line-height: 120%; + margin: 0; + text-decoration: none; + text-transform: none; + padding: 15px 25px 15px 25px; + mso-padding-alt: 0px; + border-radius: 100px; + " + target="_blank" + ><b style="font-weight: 700" + ><b style="font-weight: 700" + >Go to Console</b + ></b + ></a + > + </td> + </tr> + </tbody> + </table> + </td> +</tr> +</tbody> + </table> + </div> + <!--[if mso | IE]></td></tr></table><![endif]--> + </td> + </tr> + </tbody> + </table> + </div> + <!--[if mso | IE]></td></tr></table><table align="center" border="0" cellpadding="0" cellspacing="0" class="" role="presentation" style="width:600px;" width="600" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]--> + <div style="margin: 0px auto; max-width: 600px"> + <table + align="center" + border="0" + cellpadding="0" + cellspacing="0" + role="presentation" + style="width: 100%" + > + <tbody> + <tr> + <td + style=" + direction: ltr; + font-size: 0px; + padding: 20px 0px 20px 0px; + padding-bottom: 0px; + padding-top: 20px; + text-align: center; + " + > + <!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" style="vertical-align:top;width:600px;" ><![endif]--> + <div + class="mj-column-per-100 mj-outlook-group-fix" + style=" + font-size: 0px; + text-align: left; + direction: ltr; + display: inline-block; + vertical-align: top; + width: 100%; + " + > + <table + border="0" + cellpadding="0" + cellspacing="0" + role="presentation" + style="vertical-align: top" + width="100%" + > + <tbody> + <tr> + <td + align="center" + style=" + font-size: 0px; + padding: 0px 20px 0px 20px; + padding-top: 0px; + padding-bottom: 0px; + word-break: break-word; + " + > + <div + style=" + font-family: Open Sans, Helvetica, Arial, + sans-serif; + font-size: 11px; + line-height: 22px; + text-align: center; + color: #797e82; + " + > + <p style="margin: 10px 0"> + <a + target="_blank" + rel="noopener noreferrer" + style="color: #005a8e" + href="https://legal.yahoo.com/xw/en/yahoo/privacy/topic/b2bprivacypolicy/index.html" + ><span style="color: #005a8e" + >Yahoo Privacy Policy</span + ></a + ><span style="color: #797e82" + > | </span + ><a + target="_blank" + rel="noopener noreferrer" + style="color: #005a8e" + href="https://dashboard.tld/terms-of-service-trial.html" + ><span style="color: #005a8e" + >Terms of Service</span + ></a + ><span style="color: #797e82" + > | </span + ><a + target="_blank" + rel="noopener noreferrer" + style="color: #005a8e" + href="https://dashboard.tld/support" + ><span style="color: #005a8e">Support</span></a + > + </p> + <p style="margin: 10px 0"> + <a + target="_blank" + rel="noopener noreferrer" + style="color: inherit; text-decoration: none" + href="https://dashboard.tld/tenant/trial-tenant/account/notifications" + >Click + <span style="color: #005a8e"><u>here</u></span> + to manage your notifications setting.</a + ><br /> + </p> + </div> + </td> + </tr> + </tbody> + </table> + </div> + <!--[if mso | IE]></td></tr></table><![endif]--> + </td> + </tr> + </tbody> + </table> + </div> + <!--[if mso | IE]></td></tr></table><![endif]--> + </div> + </body> +</html> diff --git a/controller-server/src/test/resources/mail/trial-reminder.html b/controller-server/src/test/resources/mail/trial-reminder.html new file mode 100644 index 00000000000..2644b187764 --- /dev/null +++ b/controller-server/src/test/resources/mail/trial-reminder.html @@ -0,0 +1,646 @@ +<!DOCTYPE html> +<html + xmlns="http://www.w3.org/1999/xhtml" + xmlns:v="urn:schemas-microsoft-com:vml" + xmlns:o="urn:schemas-microsoft-com:office:office" +> + <head> + <title></title> + <!--[if !mso]><!--> + <meta http-equiv="X-UA-Compatible" content="IE=edge" /> + <!--<![endif]--> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> + <meta name="viewport" content="width=device-width,initial-scale=1" /> + <style type="text/css"> + #outlook a { + padding: 0; + } + + body { + margin: 0; + padding: 0; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; + } + + table, + td { + border-collapse: collapse; + mso-table-lspace: 0pt; + mso-table-rspace: 0pt; + } + + img { + border: 0; + height: auto; + line-height: 100%; + outline: none; + text-decoration: none; + -ms-interpolation-mode: bicubic; + } + + p { + display: block; + margin: 13px 0; + } + </style> + <!--[if mso]> + <noscript> + <xml> + <o:OfficeDocumentSettings> + <o:AllowPNG /> + <o:PixelsPerInch>96</o:PixelsPerInch> + </o:OfficeDocumentSettings> + </xml> + </noscript> + <![endif]--> + <!--[if lte mso 11]> + <style type="text/css"> + .mj-outlook-group-fix { + width: 100% !important; + } + </style> + <![endif]--> + <!--[if !mso]><!--> + <link + href="https://fonts.googleapis.com/css?family=Open Sans" + rel="stylesheet" + type="text/css" + /> + <style type="text/css"> + @import url(https://fonts.googleapis.com/css?family=Open Sans); + </style> + <!--<![endif]--> + <style type="text/css"> + @media only screen and (min-width: 480px) { + .mj-column-per-100 { + width: 100% !important; + max-width: 100%; + } + } + </style> + <style media="screen and (min-width:480px)"> + .moz-text-html .mj-column-per-100 { + width: 100% !important; + max-width: 100%; + } + </style> + <style type="text/css"> + [owa] .mj-column-per-100 { + width: 100% !important; + max-width: 100%; + } + </style> + <style type="text/css"> + @media only screen and (max-width: 480px) { + table.mj-full-width-mobile { + width: 100% !important; + } + + td.mj-full-width-mobile { + width: auto !important; + } + } + </style> + </head> + + <body style="word-spacing: normal; background-color: #f2f7fa"> + <div style="background-color: #f2f7fa"> + <!--[if mso | IE]><table align="center" border="0" cellpadding="0" cellspacing="0" class="" role="presentation" style="width:600px;" width="600" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]--> + <div style="margin: 0px auto; max-width: 600px"> + <table + align="center" + border="0" + cellpadding="0" + cellspacing="0" + role="presentation" + style="width: 100%" + > + <tbody> + <tr> + <td + style=" + direction: ltr; + font-size: 0px; + padding: 20px 0px 20px 0px; + padding-bottom: 0px; + padding-top: 0px; + text-align: center; + " + > + <!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" style="vertical-align:top;width:600px;" ><![endif]--> + <div + class="mj-column-per-100 mj-outlook-group-fix" + style=" + font-size: 0px; + text-align: left; + direction: ltr; + display: inline-block; + vertical-align: top; + width: 100%; + " + > + <table + border="0" + cellpadding="0" + cellspacing="0" + role="presentation" + style="vertical-align: top" + width="100%" + > + <tbody> + <tr> + <td + align="left" + style=" + font-size: 0px; + padding: 0px 0px 0px 25px; + padding-top: 0px; + padding-bottom: 0px; + word-break: break-word; + " + > + <div + style=" + font-family: Open Sans, Helvetica, Arial, + sans-serif; + font-size: 11px; + line-height: 22px; + text-align: left; + color: #797e82; + " + > + <br /> + </div> + </td> + </tr> + </tbody> + </table> + </div> + <!--[if mso | IE]></td></tr></table><![endif]--> + </td> + </tr> + </tbody> + </table> + </div> + <!--[if mso | IE]></td></tr></table><table align="center" border="0" cellpadding="0" cellspacing="0" class="" role="presentation" style="width:600px;" width="600" bgcolor="#ffffff" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]--> + <div + style=" + background: #ffffff; + background-color: #ffffff; + margin: 0px auto; + max-width: 600px; + " + > + <table + align="center" + border="0" + cellpadding="0" + cellspacing="0" + role="presentation" + style="background: #ffffff; background-color: #ffffff; width: 100%" + > + <tbody> + <tr> + <td + style=" + direction: ltr; + font-size: 0px; + padding: 20px 0; + padding-bottom: 0px; + padding-left: 0px; + padding-right: 0px; + padding-top: 0px; + text-align: center; + " + > + <!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" style="vertical-align:top;width:600px;" ><![endif]--> + <div + class="mj-column-per-100 mj-outlook-group-fix" + style=" + font-size: 0px; + text-align: left; + direction: ltr; + display: inline-block; + vertical-align: top; + width: 100%; + " + > + <table + border="0" + cellpadding="0" + cellspacing="0" + role="presentation" + style="vertical-align: top" + width="100%" + > + <tbody> + <tr> + <td + align="center" + style=" + font-size: 0px; + padding: 10px 25px; + padding-top: 0px; + padding-right: 0px; + padding-bottom: 40px; + padding-left: 0px; + word-break: break-word; + " + > + <p + style=" + border-top: solid 8px #005a8e; + font-size: 1px; + margin: 0px auto; + width: 100%; + " + ></p> + <!--[if mso | IE + ]><table + align="center" + border="0" + cellpadding="0" + cellspacing="0" + style=" + border-top: solid 8px #005a8e; + font-size: 1px; + margin: 0px auto; + width: 600px; + " + role="presentation" + width="600px" + > + <tr> + <td style="height: 0; line-height: 0"> + + </td> + </tr> + </table><! + [endif]--> + </td> + </tr> + <tr> + <td + align="center" + style=" + font-size: 0px; + padding: 10px 25px; + padding-top: 0px; + padding-bottom: 0px; + word-break: break-word; + " + > + <table + border="0" + cellpadding="0" + cellspacing="0" + role="presentation" + style=" + border-collapse: collapse; + border-spacing: 0px; + " + > + <tbody> + <tr> + <td style="width: 121px"> + <img + alt="" + height="auto" + src="https://data.vespa.oath.cloud/assets/vespa-cloud-logo.png" + style=" + border: none; + display: block; + outline: none; + text-decoration: none; + height: auto; + width: 100%; + font-size: 13px; + " + width="121" + /> + </td> + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> + </table> + </div> + <!--[if mso | IE]></td></tr></table><![endif]--> + </td> + </tr> + </tbody> + </table> + </div> + <!--[if mso | IE]></td></tr></table><table align="center" border="0" cellpadding="0" cellspacing="0" class="" role="presentation" style="width:600px;" width="600" bgcolor="#ffffff" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]--> + <div + style=" + background: #ffffff; + background-color: #ffffff; + margin: 0px auto; + max-width: 600px; + " + > + <table + align="center" + border="0" + cellpadding="0" + cellspacing="0" + role="presentation" + style="background: #ffffff; background-color: #ffffff; width: 100%" + > + <tbody> + <tr> + <td + style=" + direction: ltr; + font-size: 0px; + padding: 20px 0px 20px 0px; + padding-bottom: 70px; + padding-top: 30px; + text-align: center; + " + > + <!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" style="vertical-align:top;width:600px;" ><![endif]--> + <div + class="mj-column-per-100 mj-outlook-group-fix" + style=" + font-size: 0px; + text-align: left; + direction: ltr; + display: inline-block; + vertical-align: top; + width: 100%; + " + > + <table + border="0" + cellpadding="0" + cellspacing="0" + role="presentation" + style="vertical-align: top" + width="100%" + > + +<tbody> +<tr> + <td + align="left" + style=" + font-size: 0px; + padding: 0px 25px 0px 25px; + padding-top: 0px; + padding-right: 50px; + padding-bottom: 0px; + padding-left: 50px; + word-break: break-word; + " + > + <div + style=" + font-family: Open Sans, Helvetica, Arial, + sans-serif; + font-size: 13px; + line-height: 22px; + text-align: left; + color: #797e82; + " + > + <h1 + style=" + text-align: center; + color: #000000; + line-height: 32px; + " + > + How is your Vespa Cloud trial going? + </h1> + </div> + </td> +</tr> +<tr> + <td + align="left" + style=" + font-size: 0px; + padding: 0px 25px 0px 25px; + padding-top: 0px; + padding-right: 50px; + padding-bottom: 0px; + padding-left: 50px; + word-break: break-word; + " + > + <div + style=" + font-family: Open Sans, Helvetica, Arial, + sans-serif; + font-size: 13px; + line-height: 22px; + text-align: left; + color: #797e82; + " + > + +<p> + How is your Vespa Cloud trial going? Please reach out to us if you have any questions or feedback. +</p> + </div> + </td> +</tr> +<tr> + <td + align="center" + vertical-align="middle" + style=" + font-size: 0px; + padding: 10px 25px; + padding-top: 20px; + padding-bottom: 20px; + word-break: break-word; + " + > + <table + border="0" + cellpadding="0" + cellspacing="0" + role="presentation" + style="border-collapse: separate; line-height: 100%" + > + <tbody> + <tr> + <td + align="center" + bgcolor="#005A8E" + role="presentation" + style=" + border: none; + border-radius: 100px; + cursor: auto; + mso-padding-alt: 15px 25px 15px 25px; + background: #005a8e; + " + valign="middle" + > + <a + href="https://dashboard.tld/trial-tenant" + style=" + display: inline-block; + background: #005a8e; + color: #ffffff; + font-family: Open Sans, Helvetica, Arial, + sans-serif; + font-size: 13px; + font-weight: normal; + line-height: 120%; + margin: 0; + text-decoration: none; + text-transform: none; + padding: 15px 25px 15px 25px; + mso-padding-alt: 0px; + border-radius: 100px; + " + target="_blank" + ><b style="font-weight: 700" + ><b style="font-weight: 700" + >Go to Console</b + ></b + ></a + > + </td> + </tr> + </tbody> + </table> + </td> +</tr> +</tbody> + </table> + </div> + <!--[if mso | IE]></td></tr></table><![endif]--> + </td> + </tr> + </tbody> + </table> + </div> + <!--[if mso | IE]></td></tr></table><table align="center" border="0" cellpadding="0" cellspacing="0" class="" role="presentation" style="width:600px;" width="600" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]--> + <div style="margin: 0px auto; max-width: 600px"> + <table + align="center" + border="0" + cellpadding="0" + cellspacing="0" + role="presentation" + style="width: 100%" + > + <tbody> + <tr> + <td + style=" + direction: ltr; + font-size: 0px; + padding: 20px 0px 20px 0px; + padding-bottom: 0px; + padding-top: 20px; + text-align: center; + " + > + <!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" style="vertical-align:top;width:600px;" ><![endif]--> + <div + class="mj-column-per-100 mj-outlook-group-fix" + style=" + font-size: 0px; + text-align: left; + direction: ltr; + display: inline-block; + vertical-align: top; + width: 100%; + " + > + <table + border="0" + cellpadding="0" + cellspacing="0" + role="presentation" + style="vertical-align: top" + width="100%" + > + <tbody> + <tr> + <td + align="center" + style=" + font-size: 0px; + padding: 0px 20px 0px 20px; + padding-top: 0px; + padding-bottom: 0px; + word-break: break-word; + " + > + <div + style=" + font-family: Open Sans, Helvetica, Arial, + sans-serif; + font-size: 11px; + line-height: 22px; + text-align: center; + color: #797e82; + " + > + <p style="margin: 10px 0"> + <a + target="_blank" + rel="noopener noreferrer" + style="color: #005a8e" + href="https://legal.yahoo.com/xw/en/yahoo/privacy/topic/b2bprivacypolicy/index.html" + ><span style="color: #005a8e" + >Yahoo Privacy Policy</span + ></a + ><span style="color: #797e82" + > | </span + ><a + target="_blank" + rel="noopener noreferrer" + style="color: #005a8e" + href="https://dashboard.tld/terms-of-service-trial.html" + ><span style="color: #005a8e" + >Terms of Service</span + ></a + ><span style="color: #797e82" + > | </span + ><a + target="_blank" + rel="noopener noreferrer" + style="color: #005a8e" + href="https://dashboard.tld/support" + ><span style="color: #005a8e">Support</span></a + > + </p> + <p style="margin: 10px 0"> + <a + target="_blank" + rel="noopener noreferrer" + style="color: inherit; text-decoration: none" + href="https://dashboard.tld/tenant/trial-tenant/account/notifications" + >Click + <span style="color: #005a8e"><u>here</u></span> + to manage your notifications setting.</a + ><br /> + </p> + </div> + </td> + </tr> + </tbody> + </table> + </div> + <!--[if mso | IE]></td></tr></table><![endif]--> + </td> + </tr> + </tbody> + </table> + </div> + <!--[if mso | IE]></td></tr></table><![endif]--> + </div> + </body> +</html> diff --git a/controller-server/src/test/resources/mail/welcome.html b/controller-server/src/test/resources/mail/welcome.html new file mode 100644 index 00000000000..a21a7cdf45f --- /dev/null +++ b/controller-server/src/test/resources/mail/welcome.html @@ -0,0 +1,646 @@ +<!DOCTYPE html> +<html + xmlns="http://www.w3.org/1999/xhtml" + xmlns:v="urn:schemas-microsoft-com:vml" + xmlns:o="urn:schemas-microsoft-com:office:office" +> + <head> + <title></title> + <!--[if !mso]><!--> + <meta http-equiv="X-UA-Compatible" content="IE=edge" /> + <!--<![endif]--> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> + <meta name="viewport" content="width=device-width,initial-scale=1" /> + <style type="text/css"> + #outlook a { + padding: 0; + } + + body { + margin: 0; + padding: 0; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; + } + + table, + td { + border-collapse: collapse; + mso-table-lspace: 0pt; + mso-table-rspace: 0pt; + } + + img { + border: 0; + height: auto; + line-height: 100%; + outline: none; + text-decoration: none; + -ms-interpolation-mode: bicubic; + } + + p { + display: block; + margin: 13px 0; + } + </style> + <!--[if mso]> + <noscript> + <xml> + <o:OfficeDocumentSettings> + <o:AllowPNG /> + <o:PixelsPerInch>96</o:PixelsPerInch> + </o:OfficeDocumentSettings> + </xml> + </noscript> + <![endif]--> + <!--[if lte mso 11]> + <style type="text/css"> + .mj-outlook-group-fix { + width: 100% !important; + } + </style> + <![endif]--> + <!--[if !mso]><!--> + <link + href="https://fonts.googleapis.com/css?family=Open Sans" + rel="stylesheet" + type="text/css" + /> + <style type="text/css"> + @import url(https://fonts.googleapis.com/css?family=Open Sans); + </style> + <!--<![endif]--> + <style type="text/css"> + @media only screen and (min-width: 480px) { + .mj-column-per-100 { + width: 100% !important; + max-width: 100%; + } + } + </style> + <style media="screen and (min-width:480px)"> + .moz-text-html .mj-column-per-100 { + width: 100% !important; + max-width: 100%; + } + </style> + <style type="text/css"> + [owa] .mj-column-per-100 { + width: 100% !important; + max-width: 100%; + } + </style> + <style type="text/css"> + @media only screen and (max-width: 480px) { + table.mj-full-width-mobile { + width: 100% !important; + } + + td.mj-full-width-mobile { + width: auto !important; + } + } + </style> + </head> + + <body style="word-spacing: normal; background-color: #f2f7fa"> + <div style="background-color: #f2f7fa"> + <!--[if mso | IE]><table align="center" border="0" cellpadding="0" cellspacing="0" class="" role="presentation" style="width:600px;" width="600" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]--> + <div style="margin: 0px auto; max-width: 600px"> + <table + align="center" + border="0" + cellpadding="0" + cellspacing="0" + role="presentation" + style="width: 100%" + > + <tbody> + <tr> + <td + style=" + direction: ltr; + font-size: 0px; + padding: 20px 0px 20px 0px; + padding-bottom: 0px; + padding-top: 0px; + text-align: center; + " + > + <!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" style="vertical-align:top;width:600px;" ><![endif]--> + <div + class="mj-column-per-100 mj-outlook-group-fix" + style=" + font-size: 0px; + text-align: left; + direction: ltr; + display: inline-block; + vertical-align: top; + width: 100%; + " + > + <table + border="0" + cellpadding="0" + cellspacing="0" + role="presentation" + style="vertical-align: top" + width="100%" + > + <tbody> + <tr> + <td + align="left" + style=" + font-size: 0px; + padding: 0px 0px 0px 25px; + padding-top: 0px; + padding-bottom: 0px; + word-break: break-word; + " + > + <div + style=" + font-family: Open Sans, Helvetica, Arial, + sans-serif; + font-size: 11px; + line-height: 22px; + text-align: left; + color: #797e82; + " + > + <br /> + </div> + </td> + </tr> + </tbody> + </table> + </div> + <!--[if mso | IE]></td></tr></table><![endif]--> + </td> + </tr> + </tbody> + </table> + </div> + <!--[if mso | IE]></td></tr></table><table align="center" border="0" cellpadding="0" cellspacing="0" class="" role="presentation" style="width:600px;" width="600" bgcolor="#ffffff" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]--> + <div + style=" + background: #ffffff; + background-color: #ffffff; + margin: 0px auto; + max-width: 600px; + " + > + <table + align="center" + border="0" + cellpadding="0" + cellspacing="0" + role="presentation" + style="background: #ffffff; background-color: #ffffff; width: 100%" + > + <tbody> + <tr> + <td + style=" + direction: ltr; + font-size: 0px; + padding: 20px 0; + padding-bottom: 0px; + padding-left: 0px; + padding-right: 0px; + padding-top: 0px; + text-align: center; + " + > + <!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" style="vertical-align:top;width:600px;" ><![endif]--> + <div + class="mj-column-per-100 mj-outlook-group-fix" + style=" + font-size: 0px; + text-align: left; + direction: ltr; + display: inline-block; + vertical-align: top; + width: 100%; + " + > + <table + border="0" + cellpadding="0" + cellspacing="0" + role="presentation" + style="vertical-align: top" + width="100%" + > + <tbody> + <tr> + <td + align="center" + style=" + font-size: 0px; + padding: 10px 25px; + padding-top: 0px; + padding-right: 0px; + padding-bottom: 40px; + padding-left: 0px; + word-break: break-word; + " + > + <p + style=" + border-top: solid 8px #005a8e; + font-size: 1px; + margin: 0px auto; + width: 100%; + " + ></p> + <!--[if mso | IE + ]><table + align="center" + border="0" + cellpadding="0" + cellspacing="0" + style=" + border-top: solid 8px #005a8e; + font-size: 1px; + margin: 0px auto; + width: 600px; + " + role="presentation" + width="600px" + > + <tr> + <td style="height: 0; line-height: 0"> + + </td> + </tr> + </table><! + [endif]--> + </td> + </tr> + <tr> + <td + align="center" + style=" + font-size: 0px; + padding: 10px 25px; + padding-top: 0px; + padding-bottom: 0px; + word-break: break-word; + " + > + <table + border="0" + cellpadding="0" + cellspacing="0" + role="presentation" + style=" + border-collapse: collapse; + border-spacing: 0px; + " + > + <tbody> + <tr> + <td style="width: 121px"> + <img + alt="" + height="auto" + src="https://data.vespa.oath.cloud/assets/vespa-cloud-logo.png" + style=" + border: none; + display: block; + outline: none; + text-decoration: none; + height: auto; + width: 100%; + font-size: 13px; + " + width="121" + /> + </td> + </tr> + </tbody> + </table> + </td> + </tr> + </tbody> + </table> + </div> + <!--[if mso | IE]></td></tr></table><![endif]--> + </td> + </tr> + </tbody> + </table> + </div> + <!--[if mso | IE]></td></tr></table><table align="center" border="0" cellpadding="0" cellspacing="0" class="" role="presentation" style="width:600px;" width="600" bgcolor="#ffffff" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]--> + <div + style=" + background: #ffffff; + background-color: #ffffff; + margin: 0px auto; + max-width: 600px; + " + > + <table + align="center" + border="0" + cellpadding="0" + cellspacing="0" + role="presentation" + style="background: #ffffff; background-color: #ffffff; width: 100%" + > + <tbody> + <tr> + <td + style=" + direction: ltr; + font-size: 0px; + padding: 20px 0px 20px 0px; + padding-bottom: 70px; + padding-top: 30px; + text-align: center; + " + > + <!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" style="vertical-align:top;width:600px;" ><![endif]--> + <div + class="mj-column-per-100 mj-outlook-group-fix" + style=" + font-size: 0px; + text-align: left; + direction: ltr; + display: inline-block; + vertical-align: top; + width: 100%; + " + > + <table + border="0" + cellpadding="0" + cellspacing="0" + role="presentation" + style="vertical-align: top" + width="100%" + > + +<tbody> +<tr> + <td + align="left" + style=" + font-size: 0px; + padding: 0px 25px 0px 25px; + padding-top: 0px; + padding-right: 50px; + padding-bottom: 0px; + padding-left: 50px; + word-break: break-word; + " + > + <div + style=" + font-family: Open Sans, Helvetica, Arial, + sans-serif; + font-size: 13px; + line-height: 22px; + text-align: left; + color: #797e82; + " + > + <h1 + style=" + text-align: center; + color: #000000; + line-height: 32px; + " + > + Welcome to Vespa Cloud + </h1> + </div> + </td> +</tr> +<tr> + <td + align="left" + style=" + font-size: 0px; + padding: 0px 25px 0px 25px; + padding-top: 0px; + padding-right: 50px; + padding-bottom: 0px; + padding-left: 50px; + word-break: break-word; + " + > + <div + style=" + font-family: Open Sans, Helvetica, Arial, + sans-serif; + font-size: 13px; + line-height: 22px; + text-align: left; + color: #797e82; + " + > + +<p> + Welcome to Vespa Cloud! We hope you will enjoy your trial. Please reach out to us if you have any questions or feedback. +</p> + </div> + </td> +</tr> +<tr> + <td + align="center" + vertical-align="middle" + style=" + font-size: 0px; + padding: 10px 25px; + padding-top: 20px; + padding-bottom: 20px; + word-break: break-word; + " + > + <table + border="0" + cellpadding="0" + cellspacing="0" + role="presentation" + style="border-collapse: separate; line-height: 100%" + > + <tbody> + <tr> + <td + align="center" + bgcolor="#005A8E" + role="presentation" + style=" + border: none; + border-radius: 100px; + cursor: auto; + mso-padding-alt: 15px 25px 15px 25px; + background: #005a8e; + " + valign="middle" + > + <a + href="https://dashboard.tld/trial-tenant" + style=" + display: inline-block; + background: #005a8e; + color: #ffffff; + font-family: Open Sans, Helvetica, Arial, + sans-serif; + font-size: 13px; + font-weight: normal; + line-height: 120%; + margin: 0; + text-decoration: none; + text-transform: none; + padding: 15px 25px 15px 25px; + mso-padding-alt: 0px; + border-radius: 100px; + " + target="_blank" + ><b style="font-weight: 700" + ><b style="font-weight: 700" + >Go to Console</b + ></b + ></a + > + </td> + </tr> + </tbody> + </table> + </td> +</tr> +</tbody> + </table> + </div> + <!--[if mso | IE]></td></tr></table><![endif]--> + </td> + </tr> + </tbody> + </table> + </div> + <!--[if mso | IE]></td></tr></table><table align="center" border="0" cellpadding="0" cellspacing="0" class="" role="presentation" style="width:600px;" width="600" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]--> + <div style="margin: 0px auto; max-width: 600px"> + <table + align="center" + border="0" + cellpadding="0" + cellspacing="0" + role="presentation" + style="width: 100%" + > + <tbody> + <tr> + <td + style=" + direction: ltr; + font-size: 0px; + padding: 20px 0px 20px 0px; + padding-bottom: 0px; + padding-top: 20px; + text-align: center; + " + > + <!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" style="vertical-align:top;width:600px;" ><![endif]--> + <div + class="mj-column-per-100 mj-outlook-group-fix" + style=" + font-size: 0px; + text-align: left; + direction: ltr; + display: inline-block; + vertical-align: top; + width: 100%; + " + > + <table + border="0" + cellpadding="0" + cellspacing="0" + role="presentation" + style="vertical-align: top" + width="100%" + > + <tbody> + <tr> + <td + align="center" + style=" + font-size: 0px; + padding: 0px 20px 0px 20px; + padding-top: 0px; + padding-bottom: 0px; + word-break: break-word; + " + > + <div + style=" + font-family: Open Sans, Helvetica, Arial, + sans-serif; + font-size: 11px; + line-height: 22px; + text-align: center; + color: #797e82; + " + > + <p style="margin: 10px 0"> + <a + target="_blank" + rel="noopener noreferrer" + style="color: #005a8e" + href="https://legal.yahoo.com/xw/en/yahoo/privacy/topic/b2bprivacypolicy/index.html" + ><span style="color: #005a8e" + >Yahoo Privacy Policy</span + ></a + ><span style="color: #797e82" + > | </span + ><a + target="_blank" + rel="noopener noreferrer" + style="color: #005a8e" + href="https://dashboard.tld/terms-of-service-trial.html" + ><span style="color: #005a8e" + >Terms of Service</span + ></a + ><span style="color: #797e82" + > | </span + ><a + target="_blank" + rel="noopener noreferrer" + style="color: #005a8e" + href="https://dashboard.tld/support" + ><span style="color: #005a8e">Support</span></a + > + </p> + <p style="margin: 10px 0"> + <a + target="_blank" + rel="noopener noreferrer" + style="color: inherit; text-decoration: none" + href="https://dashboard.tld/tenant/trial-tenant/account/notifications" + >Click + <span style="color: #005a8e"><u>here</u></span> + to manage your notifications setting.</a + ><br /> + </p> + </div> + </td> + </tr> + </tbody> + </table> + </div> + <!--[if mso | IE]></td></tr></table><![endif]--> + </td> + </tr> + </tbody> + </table> + </div> + <!--[if mso | IE]></td></tr></table><![endif]--> + </div> + </body> +</html> |