| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 | package emailimport "strings"// mail related images hosted on githubvar (	netmakerLogoTeal = "https://raw.githubusercontent.com/gravitl/netmaker/netmaker_logos/img/logos/netmaker-logo-2.png")type EmailBodyBuilder interface {	WithHeadline(text string) EmailBodyBuilder	WithParagraph(text string) EmailBodyBuilder	WithHtml(text string) EmailBodyBuilder	WithSignature() EmailBodyBuilder	Build() string}type EmailBodyBuilderWithH1HeadlineAndImage struct {	headline     string	bodyContent  []string	hasSignature bool}func (b *EmailBodyBuilderWithH1HeadlineAndImage) WithHeadline(text string) EmailBodyBuilder {	b.headline = text	return b}func (b *EmailBodyBuilderWithH1HeadlineAndImage) WithParagraph(text string) EmailBodyBuilder {	b.bodyContent = append(b.bodyContent, styledParagraph(text))	return b}func (b *EmailBodyBuilderWithH1HeadlineAndImage) WithHtml(text string) EmailBodyBuilder {	b.bodyContent = append(b.bodyContent, text)	return b}func (b *EmailBodyBuilderWithH1HeadlineAndImage) WithSignature() EmailBodyBuilder {	b.hasSignature = true	return b}func (b *EmailBodyBuilderWithH1HeadlineAndImage) Build() string {	bodyContent := strings.Join(b.bodyContent, "")	// TODO: Edit design to add signature.	//signature := ""	//if b.hasSignature {	//	signature = styledSignature()	//}	return `<!doctype html><html lang="en">  <head>    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">    <title>Simple Transactional Email</title>    <style media="all" type="text/css">@media all {  .btn-primary table td:hover {    background-color: #ec0867 !important;  }  .btn-primary a:hover {    background-color: #ec0867 !important;    border-color: #ec0867 !important;  }}@media only screen and (max-width: 640px) {  .main p,.main td,.main span {    font-size: 16px !important;  }  .wrapper {    padding: 8px !important;  }  .content {    padding: 0 !important;  }  .container {    padding: 0 !important;    padding-top: 8px !important;    width: 100% !important;  }  .main {    border-left-width: 0 !important;    border-radius: 0 !important;    border-right-width: 0 !important;  }  .btn table {    max-width: 100% !important;    width: 100% !important;  }  .btn a {    font-size: 16px !important;    max-width: 100% !important;    width: 100% !important;  }}@media all {  .ExternalClass {    width: 100%;  }  .ExternalClass,.ExternalClass p,.ExternalClass span,.ExternalClass font,.ExternalClass td,.ExternalClass div {    line-height: 100%;  }  .apple-link a {    color: inherit !important;    font-family: inherit !important;    font-size: inherit !important;    font-weight: inherit !important;    line-height: inherit !important;    text-decoration: none !important;  }  #MessageViewBody a {    color: inherit;    text-decoration: none;    font-size: inherit;    font-family: inherit;    font-weight: inherit;    line-height: inherit;  }}</style>  </head>  <body style="font-family: Helvetica, sans-serif; -webkit-font-smoothing: antialiased; font-size: 16px; line-height: 1.3; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; background-color: #f4f5f6; margin: 0; padding: 0;">    <table role="presentation" border="0" cellpadding="0" cellspacing="0" class="body" style="border-collapse: separate; mso-table-lspace: 0pt; mso-table-rspace: 0pt; background-color: #f4f5f6; width: 100%;" width="100%" bgcolor="#f4f5f6">      <tr>        <td style="font-family: Helvetica, sans-serif; font-size: 16px; vertical-align: top;" valign="top"> </td>        <td class="container" style="font-family: Helvetica, sans-serif; font-size: 16px; vertical-align: top; max-width: 600px; padding: 24px 0px 24px 0px; width: 600px; margin: 0 auto;" width="600" valign="top">          <div class="content" style="box-sizing: border-box; display: block; margin: 0 auto; max-width: 600px; padding: 0;">            <!-- START CENTERED WHITE CONTAINER -->            <table role="presentation" border="0" cellpadding="0" cellspacing="0" class="main" style="border-collapse: separate; mso-table-lspace: 0pt; mso-table-rspace: 0pt; background: #ffffff; border: 1px solid #eaebed; border-radius: 16px; width: 100%;" width="100%">              <!-- START MAIN CONTENT AREA -->              <tr>                <td class="wrapper" style="font-family: Helvetica, sans-serif; font-size: 16px; vertical-align: top; box-sizing: border-box; padding: 24px;" valign="top">                  <img src="` + netmakerLogoTeal + `" alt="Netmaker Logo" width="200" height="100" border="0" style="border:0; outline:none; text-decoration:none; display:block; margin-left: auto;">                  ` + bodyContent + `                </td>              </tr>              <!-- END MAIN CONTENT AREA -->              </table><!-- END CENTERED WHITE CONTAINER --></div>        </td>        <td style="font-family: Helvetica, sans-serif; font-size: 16px; vertical-align: top;" valign="top"> </td>      </tr>    </table>  </body></html>`}func styledParagraph(text string) string {	return `<p style="font-family: Helvetica, sans-serif; font-size: 16px; font-weight: normal; margin: 0; margin-bottom: 16px;">` + text + `</p>`}
 |