Browse Source

feat: update email template.

Vishal Dalwadi 11 months ago
parent
commit
380640d8a5
2 changed files with 67 additions and 5 deletions
  1. 44 5
      pro/email/invite.go
  2. 23 0
      pro/email/utils.go

+ 44 - 5
pro/email/invite.go

@@ -2,6 +2,7 @@ package email
 
 
 import (
 import (
 	"fmt"
 	"fmt"
+	"github.com/gravitl/netmaker/servercfg"
 )
 )
 
 
 // UserInvitedMail - mail for users that are invited to a tenant
 // UserInvitedMail - mail for users that are invited to a tenant
@@ -12,16 +13,54 @@ type UserInvitedMail struct {
 
 
 // GetSubject - gets the subject of the email
 // GetSubject - gets the subject of the email
 func (UserInvitedMail) GetSubject(info Notification) string {
 func (UserInvitedMail) GetSubject(info Notification) string {
-	return "Netmaker: Pending Invitation"
+	return "You're invited to join Netmaker"
 }
 }
 
 
 // GetBody - gets the body of the email
 // GetBody - gets the body of the email
 func (invite UserInvitedMail) GetBody(info Notification) string {
 func (invite UserInvitedMail) GetBody(info Notification) string {
+	if servercfg.DeployedByOperator() {
+		return invite.BodyBuilder.
+			WithParagraph("Hi there,").
+			WithParagraph("<br>").
+			WithParagraph("Great news! Your colleague has invited you to join their Netmaker SaaS Tenant.").
+			WithParagraph("Click the link below to accept your invitation:").
+			WithParagraph("<br>").
+			WithParagraph(fmt.Sprintf("<a class=\"x-button\" href=\"%s\">Accept Invitation</a>", invite.InviteURL)).
+			WithParagraph("<br>").
+			WithParagraph("Why you'll love Netmaker:").
+			WithParagraph("<ul>").
+			WithParagraph("<li>Blazing-fast connections with our WireGuard®-powered mesh VPN</li>").
+			WithParagraph("<li>Seamless multi-cloud and hybrid-cloud networking</li>").
+			WithParagraph("<li>Automated Kubernetes networking across any infrastructure</li>").
+			WithParagraph("<li>Enterprise-grade security with simple management</li>").
+			WithParagraph("</ul>").
+			WithParagraph("Got questions? Our team is here to help you every step of the way.").
+			WithParagraph("<br>").
+			WithParagraph("Welcome aboard,").
+			WithParagraph("<h2>The Netmaker Team</h2>").
+			WithParagraph("P.S. Curious to learn more before accepting? Check out our quick start tutorial at <a href=\"https://netmaker.io/tutorials\">netmaker.io/tutorials</a>").
+			Build()
+	}
 
 
 	return invite.BodyBuilder.
 	return invite.BodyBuilder.
-		WithHeadline("Join Netmaker from this invite!").
-		WithParagraph("Hello from Netmaker,").
-		WithParagraph("You have been invited to join Netmaker.").
-		WithParagraph(fmt.Sprintf("Join Using This Invite Link <a href=\"%s\">Netmaker</a>", invite.InviteURL)).
+		WithParagraph("Hi there,").
+		WithParagraph("<br>").
+		WithParagraph("Great news! Your colleague has invited you to join their Netmaker network.").
+		WithParagraph("Click the link below to accept your invitation:").
+		WithParagraph("<br>").
+		WithParagraph(fmt.Sprintf("<a class=\"x-button\" href=\"%s\">Accept Invitation</a>", invite.InviteURL)).
+		WithParagraph("<br>").
+		WithParagraph("Why you'll love Netmaker:").
+		WithParagraph("<ul>").
+		WithParagraph("<li>Blazing-fast connections with our WireGuard®-powered mesh VPN</li>").
+		WithParagraph("<li>Seamless multi-cloud and hybrid-cloud networking</li>").
+		WithParagraph("<li>Automated Kubernetes networking across any infrastructure</li>").
+		WithParagraph("<li>Enterprise-grade security with simple management</li>").
+		WithParagraph("</ul>").
+		WithParagraph("Got questions? Our team is here to help you every step of the way.").
+		WithParagraph("<br>").
+		WithParagraph("Welcome aboard,").
+		WithParagraph("<h2>The Netmaker Team</h2>").
+		WithParagraph("P.S. Curious to learn more before accepting? Check out our quick start tutorial at <a href=\"https://netmaker.io/tutorials\">netmaker.io/tutorials</a>").
 		Build()
 		Build()
 }
 }

+ 23 - 0
pro/email/utils.go

@@ -74,6 +74,29 @@ func (b *EmailBodyBuilderWithH1HeadlineAndImage) Build() string {
 		    <![endif]-->
 		    <![endif]-->
 		    <style>
 		    <style>
 		        *{box-sizing:border-box}body{margin:0;padding:0}a[x-apple-data-detectors]{color:inherit!important;text-decoration:inherit!important}#MessageViewBody a{color:inherit;text-decoration:none}p{line-height:inherit}.desktop_hide,.desktop_hide table{mso-hide:all;display:none;max-height:0;overflow:hidden}@media (max-width:720px){.desktop_hide table.icons-inner{display:inline-block!important}.icons-inner{text-align:center}.icons-inner td{margin:0 auto}.image_block img.big,.row-content{width:100%!important}.mobile_hide{display:none}.stack .column{width:100%;display:block}.mobile_hide{min-height:0;max-height:0;max-width:0;overflow:hidden;font-size:0}.desktop_hide,.desktop_hide table{display:table!important;max-height:none!important}}
 		        *{box-sizing:border-box}body{margin:0;padding:0}a[x-apple-data-detectors]{color:inherit!important;text-decoration:inherit!important}#MessageViewBody a{color:inherit;text-decoration:none}p{line-height:inherit}.desktop_hide,.desktop_hide table{mso-hide:all;display:none;max-height:0;overflow:hidden}@media (max-width:720px){.desktop_hide table.icons-inner{display:inline-block!important}.icons-inner{text-align:center}.icons-inner td{margin:0 auto}.image_block img.big,.row-content{width:100%!important}.mobile_hide{display:none}.stack .column{width:100%;display:block}.mobile_hide{min-height:0;max-height:0;max-width:0;overflow:hidden;font-size:0}.desktop_hide,.desktop_hide table{display:table!important;max-height:none!important}}
+				.x-button {
+					background: #5E5DF0;
+					border-radius: 999px;
+					box-shadow: #5E5DF0 0 10px 20px -10px;
+					box-sizing: border-box;
+					color: #FFFFFF;
+					cursor: pointer;
+					font-family: Inter,Helvetica,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Noto Color Emoji","Segoe UI Symbol","Android Emoji",EmojiSymbols,-apple-system,system-ui,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans",sans-serif;
+					font-size: 16px;
+					font-weight: 700;
+					line-height: 24px;
+					opacity: 1;
+					outline: 0 solid transparent;
+					padding: 8px 18px;
+					user-select: none;
+					-webkit-user-select: none;
+					touch-action: manipulation;
+					width: fit-content;
+					word-break: break-word;
+					border: 0;
+					margin: 20px;
+					text-decoration: none;
+				}
 		    </style>
 		    </style>
 		</head>
 		</head>
 		<body style="background-color:transparent;margin:0;padding:0;-webkit-text-size-adjust:none;text-size-adjust:none">
 		<body style="background-color:transparent;margin:0;padding:0;-webkit-text-size-adjust:none;text-size-adjust:none">