utils.go 40 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567
  1. package email
  2. import "strings"
  3. // mail related images hosted on github
  4. var (
  5. nLogoTeal = "https://raw.githubusercontent.com/gravitl/netmaker/netmaker_logos/img/logos/N_Teal.png"
  6. netmakerLogoTeal = "https://raw.githubusercontent.com/gravitl/netmaker/netmaker_logos/img/logos/netmaker-logo-2.png"
  7. netmakerMeshLogo = "https://raw.githubusercontent.com/gravitl/netmaker/netmaker_logos/img/logos/netmaker-mesh.png"
  8. linkedinIcon = "https://raw.githubusercontent.com/gravitl/netmaker/netmaker_logos/img/logos/linkedin2x.png"
  9. discordIcon = "https://raw.githubusercontent.com/gravitl/netmaker/netmaker_logos/img/logos/discord-logo-png-7617.png"
  10. githubIcon = "https://raw.githubusercontent.com/gravitl/netmaker/netmaker_logos/img/logos/Octocat.png"
  11. mailIcon = "https://raw.githubusercontent.com/gravitl/netmaker/netmaker_logos/img/logos/icons8-mail-24.png"
  12. addressIcon = "https://raw.githubusercontent.com/gravitl/netmaker/netmaker_logos/img/logos/icons8-address-16.png"
  13. linkIcon = "https://raw.githubusercontent.com/gravitl/netmaker/netmaker_logos/img/logos/icons8-hyperlink-64.png"
  14. )
  15. type EmailBodyBuilder interface {
  16. WithHeadline(text string) EmailBodyBuilder
  17. WithParagraph(text string) EmailBodyBuilder
  18. WithSignature() EmailBodyBuilder
  19. Build() string
  20. }
  21. type EmailBodyBuilderWithH1HeadlineAndImage struct {
  22. headline string
  23. paragraphs []string
  24. hasSignature bool
  25. }
  26. func (b *EmailBodyBuilderWithH1HeadlineAndImage) WithHeadline(text string) EmailBodyBuilder {
  27. b.headline = text
  28. return b
  29. }
  30. func (b *EmailBodyBuilderWithH1HeadlineAndImage) WithParagraph(text string) EmailBodyBuilder {
  31. b.paragraphs = append(b.paragraphs, text)
  32. return b
  33. }
  34. func (b *EmailBodyBuilderWithH1HeadlineAndImage) WithSignature() EmailBodyBuilder {
  35. b.hasSignature = true
  36. return b
  37. }
  38. func (b *EmailBodyBuilderWithH1HeadlineAndImage) Build() string {
  39. // map paragraphs to styled paragraphs
  40. styledParagraphsSlice := make([]string, len(b.paragraphs))
  41. for i, paragraph := range b.paragraphs {
  42. styledParagraphsSlice[i] = styledParagraph(paragraph)
  43. }
  44. // join styled paragraphs
  45. styledParagraphsString := strings.Join(styledParagraphsSlice, "")
  46. signature := ""
  47. if b.hasSignature {
  48. signature = styledSignature()
  49. }
  50. return `
  51. <!DOCTYPE html>
  52. <html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" lang="en">
  53. <head>
  54. <title></title>
  55. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  56. <meta name="viewport" content="width=device-width,initial-scale=1">
  57. <!--[if mso]>
  58. <xml>
  59. <o:OfficeDocumentSettings>
  60. <o:PixelsPerInch>96</o:PixelsPerInch>
  61. <o:AllowPNG/>
  62. </o:OfficeDocumentSettings>
  63. </xml>
  64. <![endif]-->
  65. <style>
  66. *{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 !important;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 20px 20px 0px;text-decoration:none;}
  67. </style>
  68. </head>
  69. <body style="background-color:transparent;margin:0;padding:0;-webkit-text-size-adjust:none;text-size-adjust:none">
  70. <table class="nl-container" width="100%" border="0" cellpadding="0" cellspacing="0" role="presentation" style="mso-table-lspace:0;mso-table-rspace:0;background-color:transparent">
  71. <tbody>
  72. <tr>
  73. <td>
  74. <table class="row row-1" align="center" width="100%" border="0" cellpadding="0" cellspacing="0" role="presentation" style="mso-table-lspace:0;mso-table-rspace:0">
  75. <tbody>
  76. <tr>
  77. <td>
  78. <table class="row-content" align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="mso-table-lspace:0;mso-table-rspace:0;color:#000;width:700px" width="700">
  79. <tbody>
  80. <tr>
  81. <td class="column column-1" width="50%" style="mso-table-lspace:0;mso-table-rspace:0;font-weight:400;text-align:left;vertical-align:top;border-top:0;border-right:0;border-bottom:0;border-left:0">
  82. <table class="image_block block-2" width="100%" border="0" cellpadding="0" cellspacing="0"
  83. role="presentation" style="mso-table-lspace:0;mso-table-rspace:0">
  84. <tr>
  85. <td class="pad" style="padding-left:15px;padding-right:15px;width:100%;padding-top:5px">
  86. <div class="alignment" align="left" style="line-height:10px"><a href="https://www.netmaker.io/" target="_blank" style="outline:none" tabindex="-1"><img class="big" src="` + netmakerLogoTeal + `"
  87. style="display:block;height:auto;border:0;width:333px;max-width:100%" width="333" alt="Netmaker" title="Netmaker"></a></div>
  88. </td>
  89. </tr>
  90. </table>
  91. <table class="divider_block block-3" width="100%" border="0" cellpadding="0" cellspacing="0" role="presentation" style="mso-table-lspace:0;mso-table-rspace:0">
  92. <tr>
  93. <td class="pad" style="padding-bottom:10px;padding-left:5px;padding-right:5px;padding-top:10px">
  94. <div class="alignment" align="center">
  95. <table border="0" cellpadding="0" cellspacing="0"
  96. role="presentation" width="100%" style="mso-table-lspace:0;mso-table-rspace:0">
  97. <tr>
  98. <td class="divider_inner" style="font-size:1px;line-height:1px;border-top:0 solid #bbb"><span>&#8202;</span></td>
  99. </tr>
  100. </table>
  101. </div>
  102. </td>
  103. </tr>
  104. </table>
  105. </td>
  106. <td class="column column-2" width="50%" style="mso-table-lspace:0;mso-table-rspace:0;font-weight:400;text-align:left;vertical-align:top;border-top:0;border-right:0;border-bottom:0;border-left:0">
  107. <table class="empty_block block-2" width="100%" border="0"
  108. cellpadding="0" cellspacing="0" role="presentation" style="mso-table-lspace:0;mso-table-rspace:0">
  109. <tr>
  110. <td class="pad" style="padding-right:0;padding-bottom:5px;padding-left:0;padding-top:5px">
  111. <div></div>
  112. </td>
  113. </tr>
  114. </table>
  115. </td>
  116. </tr>
  117. </tbody>
  118. </table>
  119. </td>
  120. </tr>
  121. </tbody>
  122. </table>
  123. <table class="row row-2" align="center" width="100%" border="0" cellpadding="0" cellspacing="0" role="presentation" style="mso-table-lspace:0;mso-table-rspace:0">
  124. <tbody>
  125. <tr>
  126. <td>
  127. <table class="row-content stack" align="center"
  128. border="0" cellpadding="0" cellspacing="0" role="presentation" style="mso-table-lspace:0;mso-table-rspace:0;color:#000;width:700px" width="700">
  129. <tbody>
  130. <tr>
  131. <td class="column column-1" width="100%" style="mso-table-lspace:0;mso-table-rspace:0;font-weight:400;text-align:left;padding-left:10px;padding-right:10px;vertical-align:top;padding-top:10px;padding-bottom:10px;border-top:0;border-right:0;border-bottom:0;border-left:0">
  132. <table class="divider_block block-1" width="100%" border="0"
  133. cellpadding="10" cellspacing="0" role="presentation" style="mso-table-lspace:0;mso-table-rspace:0">
  134. <tr>
  135. <td class="pad">
  136. <div class="alignment" align="center">
  137. <table border="0" cellpadding="0" cellspacing="0" role="presentation" width="100%" style="mso-table-lspace:0;mso-table-rspace:0">
  138. <tr>
  139. <td class="divider_inner" style="font-size:1px;line-height:1px;border-top:0 solid #bbb"><span>&#8202;</span></td>
  140. </tr>
  141. </table>
  142. </div>
  143. </td>
  144. </tr>
  145. </table>
  146. </td>
  147. </tr>
  148. </tbody>
  149. </table>
  150. </td>
  151. </tr>
  152. </tbody>
  153. </table>
  154. <table
  155. class="row row-3" align="center" width="100%" border="0" cellpadding="0" cellspacing="0" role="presentation" style="mso-table-lspace:0;mso-table-rspace:0">
  156. <tbody>
  157. <tr>
  158. <td>
  159. <table class="row-content stack" align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="mso-table-lspace:0;mso-table-rspace:0;color:#000;width:700px" width="700">
  160. <tbody>
  161. <tr>
  162. <td class="column column-1" width="50%"
  163. style="mso-table-lspace:0;mso-table-rspace:0;font-weight:400;text-align:left;vertical-align:top;border-top:0;border-right:0;border-bottom:0;border-left:0">
  164. <table class="divider_block block-2" width="100%" border="0" cellpadding="0" cellspacing="0" role="presentation" style="mso-table-lspace:0;mso-table-rspace:0">
  165. <tr>
  166. <td class="pad" style="padding-bottom:20px;padding-left:20px;padding-right:20px;padding-top:25px">
  167. <div class="alignment" align="center">
  168. <table border="0" cellpadding="0"
  169. cellspacing="0" role="presentation" width="100%" style="mso-table-lspace:0;mso-table-rspace:0">
  170. <tr>
  171. <td class="divider_inner" style="font-size:1px;line-height:1px;border-top:0 solid #bbb"><span>&#8202;</span></td>
  172. </tr>
  173. </table>
  174. </div>
  175. </td>
  176. </tr>
  177. </table>
  178. <table class="heading_block block-3" width="100%" border="0" cellpadding="0" cellspacing="0" role="presentation" style="mso-table-lspace:0;mso-table-rspace:0">
  179. <tr>
  180. <td class="pad"
  181. style="padding-bottom:15px;padding-left:10px;padding-right:10px;padding-top:10px;text-align:center;width:100%">
  182. <h1 style="margin:0;color:#2b2d2d;direction:ltr;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:28px;font-weight:400;letter-spacing:normal;line-height:120%;text-align:left;margin-top:0;margin-bottom:0"><strong>` + b.headline + `</strong></h1>
  183. </td>
  184. </tr>
  185. </table>
  186. </td>
  187. <td class="column column-2" width="50%"
  188. style="mso-table-lspace:0;mso-table-rspace:0;font-weight:400;text-align:left;vertical-align:top;border-top:0;border-right:0;border-bottom:0;border-left:0">
  189. <table class="image_block block-2" width="100%" border="0" cellpadding="0" cellspacing="0" role="presentation" style="mso-table-lspace:0;mso-table-rspace:0">
  190. <tr>
  191. <td class="pad" style="width:100%;padding-right:0;padding-left:0;padding-top:5px;padding-bottom:5px">
  192. <div class="alignment" align="center" style="line-height:10px"><img
  193. src="` + netmakerMeshLogo + `" style="display:block;height:auto;border:0;width:350px;max-width:100%" width="350" alt="Netmaker Mesh"></div>
  194. </td>
  195. </tr>
  196. </table>
  197. </td>
  198. </tr>
  199. </tbody>
  200. </table>
  201. </td>
  202. </tr>
  203. </tbody>
  204. </table>
  205. <table class="row row-4" align="center" width="100%" border="0" cellpadding="0" cellspacing="0" role="presentation"
  206. style="mso-table-lspace:0;mso-table-rspace:0">
  207. <tbody>
  208. <tr>
  209. <td>
  210. <table class="row-content stack" align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="mso-table-lspace:0;mso-table-rspace:0;color:#000;width:700px" width="700">
  211. <tbody>
  212. <tr>
  213. <td class="column column-1" width="100%" style="mso-table-lspace:0;mso-table-rspace:0;font-weight:400;text-align:left;vertical-align:top;padding-top:5px;padding-bottom:5px;border-top:0;border-right:0;border-bottom:0;border-left:0">
  214. <table class="divider_block block-1" width="100%" border="0" cellpadding="10" cellspacing="0" role="presentation" style="mso-table-lspace:0;mso-table-rspace:0">
  215. <tr>
  216. <td class="pad">
  217. <div class="alignment" align="center">
  218. <table border="0" cellpadding="0" cellspacing="0" role="presentation" width="100%" style="mso-table-lspace:0;mso-table-rspace:0">
  219. <tr>
  220. <td class="divider_inner" style="font-size:1px;line-height:1px;border-top:0 solid #bbb"><span>&#8202;</span></td>
  221. </tr>
  222. </table>
  223. </div>
  224. </td>
  225. </tr>
  226. </table>
  227. </td>
  228. </tr>
  229. </tbody>
  230. </table>
  231. </td>
  232. </tr>
  233. </tbody>
  234. </table>
  235. <table class="row row-5" align="center" width="100%" border="0" cellpadding="0" cellspacing="0" role="presentation" style="mso-table-lspace:0;mso-table-rspace:0">
  236. <tbody>
  237. <tr>
  238. <td>
  239. <table class="row-content stack" align="center" border="0" cellpadding="0" cellspacing="0" role="presentation"
  240. style="mso-table-lspace:0;mso-table-rspace:0;background-color:#0098a5;color:#000;border-top:2px solid transparent;border-right:2px solid transparent;border-left:2px solid transparent;border-bottom:2px solid transparent;border-radius:0;width:700px" width="700">
  241. <tbody>
  242. <tr>
  243. <td class="column column-1" width="100%"
  244. style="mso-table-lspace:0;mso-table-rspace:0;font-weight:400;text-align:left;border-bottom:0 solid #000;border-left:0 solid #000;border-right:0 solid #000;border-top:0 solid #000;vertical-align:top;padding-top:25px;padding-bottom:25px">
  245. <table class="text_block block-3" width="100%" border="0"
  246. cellpadding="0" cellspacing="0" role="presentation" style="mso-table-lspace:0;mso-table-rspace:0;word-break:break-word">
  247. <tr>
  248. <td class="pad" style="padding-bottom:10px;padding-left:50px;padding-right:50px;padding-top:10px">
  249. <div style="font-family:Verdana,sans-serif">
  250. <div class="txtTinyMce-wrapper" style="font-size:12px;mso-line-height-alt:18px;color:#393d47;line-height:1.5;font-family:Verdana,Geneva,sans-serif">
  251. <p style="margin:0;font-size:12px;mso-line-height-alt:18px">&nbsp;</p>
  252. ` + styledParagraphsString + `
  253. <p style="margin:0;mso-line-height-alt:18px">&nbsp;</p>
  254. </div>
  255. </div>
  256. </td>
  257. </tr>
  258. </table>
  259. </td>
  260. </tr>
  261. </tbody>
  262. </table>
  263. </td>
  264. </tr>
  265. </tbody>
  266. </table>
  267. <table class="row row-6" align="center" width="100%" border="0" cellpadding="0" cellspacing="0" role="presentation" style="mso-table-lspace:0;mso-table-rspace:0">
  268. <tbody>
  269. <tr>
  270. <td>
  271. <table
  272. class="row-content stack" align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="mso-table-lspace:0;mso-table-rspace:0;color:#000;width:700px" width="700">
  273. <tbody>
  274. <tr>
  275. <td class="column column-1" width="100%" style="mso-table-lspace:0;mso-table-rspace:0;font-weight:400;text-align:left;vertical-align:top;padding-top:5px;padding-bottom:5px;border-top:0;border-right:0;border-bottom:0;border-left:0">
  276. <table class="divider_block block-1" width="100%" border="0"
  277. cellpadding="10" cellspacing="0" role="presentation" style="mso-table-lspace:0;mso-table-rspace:0">
  278. <tr>
  279. <td class="pad">
  280. <div class="alignment" align="center">
  281. <table border="0" cellpadding="0" cellspacing="0" role="presentation" width="100%" style="mso-table-lspace:0;mso-table-rspace:0">
  282. <tr>
  283. <td class="divider_inner" style="font-size:1px;line-height:1px;border-top:0 solid #bbb"><span>&#8202;</span></td>
  284. </tr>
  285. </table>
  286. </div>
  287. </td>
  288. </tr>
  289. </table>
  290. </td>
  291. </tr>
  292. </tbody>
  293. </table>
  294. </td>
  295. </tr>
  296. </tbody>
  297. </table>
  298. <table
  299. class="row row-7" align="center" width="100%" border="0" cellpadding="0" cellspacing="0" role="presentation" style="mso-table-lspace:0;mso-table-rspace:0;background-color:#f7fafe">
  300. <tbody>
  301. <tr>
  302. <td>
  303. <table class="row-content stack" align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="mso-table-lspace:0;mso-table-rspace:0;color:#000;width:700px" width="700">
  304. <tbody>
  305. <tr>
  306. <td class="column column-1" width="100%"
  307. style="mso-table-lspace:0;mso-table-rspace:0;font-weight:400;text-align:left;vertical-align:top;padding-top:25px;padding-bottom:5px;border-top:0;border-right:0;border-bottom:0;border-left:0">
  308. <table class="divider_block block-1" width="100%" border="0" cellpadding="10" cellspacing="0" role="presentation" style="mso-table-lspace:0;mso-table-rspace:0">
  309. <tr>
  310. <td class="pad">
  311. <div class="alignment" align="center">
  312. <table border="0" cellpadding="0" cellspacing="0" role="presentation" width="100%"
  313. style="mso-table-lspace:0;mso-table-rspace:0">
  314. <tr>
  315. <td class="divider_inner" style="font-size:1px;line-height:1px;border-top:0 solid #bbb"><span>&#8202;</span></td>
  316. </tr>
  317. </table>
  318. </div>
  319. </td>
  320. </tr>
  321. </table>
  322. </td>
  323. </tr>
  324. </tbody>
  325. </table>
  326. </td>
  327. </tr>
  328. </tbody>
  329. </table>
  330. <table class="row row-8" align="center" width="100%" border="0" cellpadding="0" cellspacing="0" role="presentation" style="mso-table-lspace:0;mso-table-rspace:0;background-color:#090660">
  331. <tbody>
  332. <tr>
  333. <td>
  334. <table class="row-content stack"
  335. align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="mso-table-lspace:0;mso-table-rspace:0;color:#000;width:700px" width="700">
  336. <tbody>
  337. <tr>
  338. <td class="column column-1" width="100%" style="mso-table-lspace:0;mso-table-rspace:0;font-weight:400;text-align:left;vertical-align:top;padding-top:5px;padding-bottom:5px;border-top:0;border-right:0;border-bottom:0;border-left:0">
  339. <table class="text_block block-1" width="100%" border="0" cellpadding="0" cellspacing="0"
  340. role="presentation" style="mso-table-lspace:0;mso-table-rspace:0;word-break:break-word">
  341. <tr>
  342. <td class="pad" style="padding-bottom:10px;padding-left:50px;padding-right:50px;padding-top:10px">
  343. <div style="font-family:sans-serif">
  344. <div class="txtTinyMce-wrapper" style="font-size:12px;mso-line-height-alt:18px;color:#6f7077;line-height:1.5;font-family:Arial,Helvetica Neue,Helvetica,sans-serif">
  345. <p style="margin:0;font-size:12px;mso-line-height-alt:33px">
  346. <span style="color:#ffffff;font-size:22px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Get In Touch With Us</span>
  347. </p>
  348. </div>
  349. </div>
  350. </td>
  351. </tr>
  352. </table>
  353. <table class="social_block block-2" width="100%" border="0" cellpadding="10" cellspacing="0" role="presentation" style="mso-table-lspace:0;mso-table-rspace:0">
  354. <tr>
  355. <td class="pad">
  356. <div class="alignment" style="text-align:center">
  357. <table class="social-table"
  358. width="114.49624060150376px" border="0" cellpadding="0" cellspacing="0" role="presentation" style="mso-table-lspace:0;mso-table-rspace:0;display:inline-block">
  359. <tr>
  360. <td style="padding:0 2px 0 2px"><a href="https://www.linkedin.com/company/netmaker-inc/" target="_blank"><img src="` + linkedinIcon + `" width="32" height="32" alt="Linkedin" title="linkedin" style="display:block;height:auto;border:0"></a></td>
  361. <td
  362. style="padding:0 2px 0 2px"><a href="https://discord.gg/zRb9Vfhk8A" target="_blank"><img src="` + discordIcon + `" width="32" height="32" alt="Discord" title="Discord" style="display:block;height:auto;border:0"></a></td>
  363. <td style="padding:0 2px 0 2px"><a href="https://github.com/gravitl/netmaker" target="_blank"><img
  364. src="` + githubIcon + `" width="38.49624060150376" height="32" alt="Github" title="Github" style="display:block;height:auto;border:0"></a></td>
  365. </tr>
  366. </table>
  367. </div>
  368. </td>
  369. </tr>
  370. </table>
  371. </td>
  372. </tr>
  373. </tbody>
  374. </table>
  375. </td>
  376. </tr>
  377. </tbody>
  378. </table>
  379. <table class="row row-9" align="center" width="100%" border="0" cellpadding="0" cellspacing="0" role="presentation" style="mso-table-lspace:0;mso-table-rspace:0">
  380. <tbody>
  381. <tr>
  382. <td>
  383. <table
  384. class="row-content stack" align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="mso-table-lspace:0;mso-table-rspace:0;color:#000;width:700px" width="700">
  385. <tbody>
  386. <tr>
  387. <td class="column column-1" width="100%" style="mso-table-lspace:0;mso-table-rspace:0;font-weight:400;text-align:left;vertical-align:top;padding-top:5px;padding-bottom:5px;border-top:0;border-right:0;border-bottom:0;border-left:0">
  388. <table class="icons_block block-1" width="100%" border="0"
  389. cellpadding="0" cellspacing="0" role="presentation" style="mso-table-lspace:0;mso-table-rspace:0">
  390. <tr>
  391. <td class="pad" style="vertical-align:middle;padding-bottom:5px;padding-top:5px;text-align:center;color:#9d9d9d;font-family:inherit;font-size:15px">
  392. <table width="100%" cellpadding="0" cellspacing="0" role="presentation" style="mso-table-lspace:0;mso-table-rspace:0">
  393. <tr>
  394. <td class="alignment" style="vertical-align:middle;text-align:center">
  395. <!--[if vml]>
  396. <table align="left" cellpadding="0" cellspacing="0" role="presentation" style="display:inline-block;padding-left:0px;padding-right:0px;mso-table-lspace: 0pt;mso-table-rspace: 0pt;">
  397. <![endif]--><!--[if !vml]><!-->
  398. <table class="icons-inner" style="mso-table-lspace:0;mso-table-rspace:0;display:inline-block;margin-right:-4px;padding-left:0;padding-right:0" cellpadding="0" cellspacing="0" role="presentation">
  399. <!--<![endif]-->
  400. </table>
  401. </td></tr>
  402. </table>
  403. </td>
  404. </tr>
  405. </table>
  406. </td>
  407. </tr>
  408. </tbody>
  409. </table>
  410. </td>
  411. </tr>
  412. </tbody>
  413. </table>
  414. </td>
  415. </tr>
  416. </tbody>
  417. </table>
  418. <!-- End -->
  419. </body>
  420. ` + signature + `
  421. </html>`
  422. }
  423. func styledSignature() string {
  424. return `
  425. <footer style="display:block">
  426. <table cellpadding="0" cellspacing="0" class="sc-gPEVay eQYmiW" style="vertical-align: -webkit-baseline-middle; font-size: medium; font-family: Arial;">
  427. <tbody>
  428. <tr>
  429. <td>
  430. <table cellpadding="0" cellspacing="0" class="sc-gPEVay eQYmiW" style="vertical-align: -webkit-baseline-middle; font-size: medium; font-family: Arial;">
  431. <tbody>
  432. <tr>
  433. <td style="vertical-align: top;">
  434. <table cellpadding="0" cellspacing="0" class="sc-gPEVay eQYmiW" style="vertical-align: -webkit-baseline-middle; font-size: medium; font-family: Arial;">
  435. <tbody>
  436. <tr>
  437. <td class="sc-TOsTZ kjYrri" style="text-align: center;"><img src="` + nLogoTeal + `" role="presentation" width="130" class="sc-cHGsZl bHiaRe" style="max-width: 130px; display: block;"></td>
  438. </tr>
  439. <tr>
  440. <td height="30"></td>
  441. </tr>
  442. <tr>
  443. <td style="text-align: center;">
  444. <table cellpadding="0" cellspacing="0" class="sc-gPEVay eQYmiW" style="vertical-align: -webkit-baseline-middle; font-size: medium; font-family: Arial; display: inline-block;">
  445. <tbody>
  446. <tr style="text-align: center;">
  447. <td><a href="https://www.linkedin.com/company/netmaker-inc/" color="#6a78d1" class="sc-hzDkRC kpsoyz" style="display: inline-block; padding: 0px; background-color: rgb(106, 120, 209);"><img src="` + linkedinIcon + `" alt="Linkedin" color="#6a78d1" height="24" class="sc-bRBYWo ccSRck" style="background-color: rgb(106, 120, 209); max-width: 135px; display: block;"></a></td>
  448. <td width="5">
  449. <div></div>
  450. </td>
  451. <td><a href="https://discord.gg/zRb9Vfhk8A" class="sc-hzDkRC kpsoyz" style="display: inline-block; padding: 0px;"><img src="` + discordIcon + `" alt="Discord" height="24" class="sc-bRBYWo ccSRck" style="max-width: 135px; display: block;"></a></td>
  452. <td width="5">
  453. <div></div>
  454. </td>
  455. <td><a href="https://github.com/gravitl/netmaker" class="sc-hzDkRC kpsoyz" style="display: inline-block; padding: 0px;"><img src="` + githubIcon + `" alt="Github" height="24" class="sc-bRBYWo ccSRck" style="max-width: 135px; display: block;"></a></td>
  456. <td width="5">
  457. <div></div>
  458. </td>
  459. </tr>
  460. </tbody>
  461. </table>
  462. </td>
  463. </tr>
  464. </tbody>
  465. </table>
  466. </td>
  467. <td width="46">
  468. <div></div>
  469. </td>
  470. <td style="padding: 0px; vertical-align: middle;">
  471. <h3 color="#000000" class="sc-fBuWsC eeihxG" style="margin: 0px; font-size: 18px; color: rgb(0, 0, 0);"><span>Alex</span><span>&nbsp;</span><span>Feiszli</span></h3>
  472. <p color="#000000" font-size="medium" class="sc-fMiknA bxZCMx" style="margin: 0px; color: rgb(0, 0, 0); font-size: 14px; line-height: 22px;"><span>Co-Founder &amp; CEO</span></p>
  473. <p color="#000000" font-size="medium" class="sc-dVhcbM fghLuF" style="margin: 0px; font-weight: 500; color: rgb(0, 0, 0); font-size: 14px; line-height: 22px;"><span>Netmaker</span></p>
  474. <table cellpadding="0" cellspacing="0" class="sc-gPEVay eQYmiW" style="vertical-align: -webkit-baseline-middle; font-size: medium; font-family: Arial; width: 100%;">
  475. <tbody>
  476. <tr>
  477. <td height="30"></td>
  478. </tr>
  479. <tr>
  480. <td color="#545af2" direction="horizontal" height="1" class="sc-jhAzac hmXDXQ" style="width: 100%; border-bottom: 1px solid rgb(84, 90, 242); border-left: none; display: block;"></td>
  481. </tr>
  482. <tr>
  483. <td height="30"></td>
  484. </tr>
  485. </tbody>
  486. </table>
  487. <table cellpadding="0" cellspacing="0" class="sc-gPEVay eQYmiW" style="vertical-align: -webkit-baseline-middle; font-size: medium; font-family: Arial;">
  488. <tbody>
  489. <tr height="25" style="vertical-align: middle;">
  490. <td width="30" style="vertical-align: middle;">
  491. <table cellpadding="0" cellspacing="0" class="sc-gPEVay eQYmiW" style="vertical-align: -webkit-baseline-middle; font-size: medium; font-family: Arial;">
  492. <tbody>
  493. <tr>
  494. <td style="vertical-align: bottom;"><span width="11" class="sc-jlyJG bbyJzT" style="display: block"><img src="` + mailIcon + `" width="13" class="sc-iRbamj blSEcj" style="display: block;"></span></td>
  495. </tr>
  496. </tbody>
  497. </table>
  498. </td>
  499. <td style="padding: 0px;"><a href="mailto:[email protected]" color="#000000" class="sc-gipzik iyhjGb" style="text-decoration: none; color: rgb(0, 0, 0); font-size: 12px;"><span>[email protected]</span></a></td>
  500. </tr>
  501. <tr height="25" style="vertical-align: middle;">
  502. <td width="30" style="vertical-align: middle;">
  503. <table cellpadding="0" cellspacing="0" class="sc-gPEVay eQYmiW" style="vertical-align: -webkit-baseline-middle; font-size: medium; font-family: Arial;">
  504. <tbody>
  505. <tr>
  506. <td style="vertical-align: bottom;"><span width="11" class="sc-jlyJG bbyJzT" style="display: block;"><img src="` + linkIcon + `" color="#545af2" width="13" class="sc-iRbamj blSEcj" style="display: block;"></span></td>
  507. </tr>
  508. </tbody>
  509. </table>
  510. </td>
  511. <td style="padding: 0px;"><a href="https://www.netmaker.io/" color="#000000" class="sc-gipzik iyhjGb" style="text-decoration: none; color: rgb(0, 0, 0); font-size: 12px;"><span>https://www.netmaker.io/</span></a></td>
  512. </tr>
  513. <tr height="25" style="vertical-align: middle;">
  514. <td width="30" style="vertical-align: middle;">
  515. <table cellpadding="0" cellspacing="0" class="sc-gPEVay eQYmiW" style="vertical-align: -webkit-baseline-middle; font-size: medium; font-family: Arial;">
  516. <tbody>
  517. <tr>
  518. <td style="vertical-align: bottom;"><span width="11" class="sc-jlyJG bbyJzT" style="display: block;"><img src="` + addressIcon + `" width="13" class="sc-iRbamj blSEcj" style="display: block;"></span></td>
  519. </tr>
  520. </tbody>
  521. </table>
  522. </td>
  523. <td style="padding: 0px;"><span color="#000000" class="sc-csuQGl CQhxV" style="font-size: 12px; color: rgb(0, 0, 0);"><span>1465 Sand Hill Rd.Suite 2014, Candler, NC 28715</span></span></td>
  524. </tr>
  525. </tbody>
  526. </table>
  527. <table cellpadding="0" cellspacing="0" class="sc-gPEVay eQYmiW" style="vertical-align: -webkit-baseline-middle; font-size: medium; font-family: Arial;">
  528. <tbody>
  529. <tr>
  530. <td height="30"></td>
  531. </tr>
  532. </tbody>
  533. </table>
  534. </td>
  535. </tr>
  536. </tbody>
  537. </table>
  538. </td>
  539. </tr>
  540. </tbody>
  541. </table>
  542. </footer>`
  543. }
  544. func styledParagraph(text string) string {
  545. return `<p style="margin:0;mso-line-height-alt:22.5px">
  546. <span style="color:#ffffff;font-size:15px;">` + text + `</span>
  547. </p>`
  548. }
  549. func GetMailSignature() string {
  550. return styledSignature()
  551. }