Ok, siadłem do obiadu z tym Twoim cudem i sprawa wygląda tak:
- w zakodowanym stringu są dwa dodatkowe znaki:
-
-
("pauza") - która oznacza ZDEKODOWANY JUŻ znak ">"
-
_
("podkreślenie", "podłoga"), która oznacza ZDEKODOWANY JUŻ znak " "
W takim przypadku najlepiej więc rozbić string na kawałki wg tych dwóch znaków, dekodować pozostałe fragmenty i łączyć je tym, jak wskazano.
Więc zakładając, że r
zawiera już ten ciąg base64 to w ten sposób uzyskasz wynik:
const result = r.split("-").flatMap(s => {
return s.split("_").map(v => {
return atob(v);
}).join(" ");
}).join(">");
Przykładowy wynik dla tego co masz w mail.js
:
<!doctype html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="format-detection" content="telephone=no">
<meta name="format-detection" content="address=no">
<meta name="x-apple-disable-message-reformatting">
<link href="https://fonts.googleapis.com/css family=Lato:400,700,900" rel="stylesheet" type="text/css">
<!--[if mso]>
<style type="text/css">
body, table, td {font-family: Arial, Helvetica, sans-serif !important;}
</style>
<![endif]-->
<style>
body {
margin: 0;
}
.css-uegzbq{font-family:Lato,Arial,Helvetica,sans-serif;margin:0;padding:0;font-size:18px;font-weight:normal;font-stretch:normal;font-style:normal;line-height:28px;-webkit-letter-spacing:normal;-moz-letter-spacing:normal;-ms-letter-spacing:normal;letter-spacing:normal;color:#505863;}.css-uegzbq,.css-uegzbq *{font-family:Lato,Arial,Helvetica,sans-serif;}.css-1kbqv69{width:100%;background-color:#f5f6f7;text-align:center;}.css-l1mraf{max-width:500px;width:500px;margin:0 auto;background-color:#fff;text-align:left;}.css-1iuszfz{padding-top:35px;border-top:1px solid transparent;border-left:1px solid transparent;border-right:1px solid transparent;padding-left:24px;padding-right:24px;padding-bottom:30px;width:100%;}.css-9th5vf{color:#1861bf;}a.cleanBoldLink{font-family:Arial,Helvetica,sans-serif !important;font-weight:bold;-webkit-text-decoration:none;text-decoration:none;color:#1861bf;}a.clearLink{color:#1861bf;-webkit-text-decoration:none;text-decoration:none;}.css-nt1wjc{padding-left:24px;padding-right:24px;padding-top:0px;padding-bottom:0px;border-left:1px solid transparent;border-right:1px solid transparent;}.buttonCenterprimarydefault{font-family:Arial,Helvetica,sans-serif !important;font-weight:bold;font-size:15px;color:#fff !important;}.buttonCentersecondarydefault{font-family:Arial,Helvetica,sans-serif !important;font-weight:bold;font-size:15px;color:#1861bf !important;}.css-1of8vp0{border-bottom:1px solid transparent;border-left:1px solid transparent;border-right:1px solid transparent;}img.fishbowlLogoSmall{width:63px;vertical-align:text-top;}.css-96uds2{color:#1861bf;-webkit-text-decoration:none;text-decoration:none;}.css-ba2w2p{width:30px;height:30px;vertical-align:middle;border-radius:30px;}.css-1ic066d{padding-left:20px;}.css-ip60z3{height:0px;border:none;margin:0;padding:0;width:100%;border-top:1px solid #dee0e3;}.css-u6cj4z{padding-left:24px;padding-right:24px;padding-top:0px;padding-bottom:4px;border-left:1px solid transparent;border-right:1px solid transparent;}.css-x3v1q8{font-size:24px;font-weight:900;font-family:'Lato';line-height:36px;-webkit-letter-spacing:0em;-moz-letter-spacing:0em;-ms-letter-spacing:0em;letter-spacing:0em;text-align:center;color:#20262e;}.css-3arti4{font-size:18px;font-weight:700;font-family:'Lato';line-height:28px;-webkit-letter-spacing:0em;-moz-letter-spacing:0em;-ms-letter-spacing:0em;letter-spacing:0em;text-align:left;color:#20262e;}.css-ql0l4d{padding-left:24px;padding-right:24px;padding-top:0px;padding-bottom:14px;border-left:1px solid transparent;border-right:1px solid transparent;}.css-16hggsa{font-size:15px;font-weight:400;font-family:'Lato';line-height:24px;-webkit-letter-spacing:0em;-moz-letter-spacing:0em;-ms-letter-spacing:0em;letter-spacing:0em;text-align:left;color:#20262e;}.css-l72z7c{padding-left:24px;padding-right:24px;padding-top:24px;padding-bottom:20px;border-left:1px solid transparent;border-right:1px solid transparent;}.css-1stwpoo{box-sizing:border-box;border-radius:3px;padding-left:16px;padding-right:16px;}.css-1gxp3tr{width:30px;max-width:30px;padding-right:8px;}.css-glxy0g{vertical-align:middle;font-size:12px;line-height:15px;color:#505863;text-align:left;font-weight:700;}.css-2dxww1{font-size:12px;line-height:20px;text-align:right;color:#505863;min-width:140px;}.css-du5m07{padding-top:8px;padding-bottom:12px;font-size:15px;line-height:20px;color:#505863;}.css-d914bh{font-weight:bold;color:#1861bf;display:inline-block;}.css-rvlokx{padding-left:8px;font-size:12px;line-height:20px;color:#505863;}.css-1f225tk{padding-left:24px;padding-right:24px;padding-top:28px;padding-bottom:32px;border-left:1px solid transparent;border-right:1px solid transparent;}.buttonCenterprimarymarketing{font-family:Arial,Helvetica,sans-serif !important;font-weight:bold;font-size:18px;color:#fff !important;}.css-w9sma4{border:1px solid transparent;border-radius:3px;border-color:transparent;font-weight:bold;font-size:15px;color:#fff !important;cursor:pointer;display:inline-block;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;-webkit-transition:color 0.2s ease-out,background-color 0.2s ease-out,border-color 0.2s ease-out;transition:color 0.2s ease-out,background-color 0.2s ease-out,border-color 0.2s ease-out;font-family:Lato,Arial,Helvetica,sans-serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:88px;-webkit-text-decoration:none;text-decoration:none;line-height:24px;border-style:solid;width:327px;text-align:center;mso-hide:all;color:#fff !important;background-color:#1861bf;padding:9px 16px;font-size:18px;line-height:28px;}.css-w9sma4:focus{outline:0;}.css-w9sma4:link,.css-w9sma4:visited{color:#fff;}@media not all and (pointer:coarse){.css-w9sma4:hover{background-color:#0c4085;border-color:#0c4085;color:#fff !important;}}.css-w9sma4[disabled]{background-color:#abccf7;cursor:not-allowed;}.css-1l7m9ce{padding:16px 24px;font-size:12px;background:none;}.css-1l7m9ce a.footerLink{color:#1861bf;-webkit-text-decoration:underline;text-decoration:underline;white-space:nowrap;}.css-13kj92h{color:#7F7F7F;line-height:20px;margin:0;margin-top:0;margin-bottom:0;text-align:center;}a.css-1s2ng7x{color:#1861bf;-webkit-text-decoration:underline;text-decoration:underline;white-space:nowrap;}.buttonCenterspecialdefault{font-family:Arial,Helvetica,sans-serif !important;font-weight:bold;font-size:15px;color:#fff !important;}a.cleanBoldLink{font-family:Glassdoor Sans,SF Pro,Segoe UI,Roboto,Arial,Helvetica,sans-serif;font-weight:bold;-webkit-text-decoration:none;text-decoration:none;color:#1861bf;}.buttonCenterspeciallg{font-family:Arial,Helvetica,sans-serif !important;font-weight:600;font-size:14px;color:#000000 !important;white-space:nowrap;}.buttonCentersecondarysm{font-family:Arial,Helvetica,sans-serif !important;font-weight:600;font-size:14px;color:#000000 !important;white-space:nowrap;}
</style>
</head>
<body id="GDEmail">
<div id="GDEmailWrapper" class="css-uegzbq e2c2s610"><table cellSpacing="0" cellPadding="0" color="#f5f6f7" class="css-1kbqv69 e2c2s614"><tr><td><table cellSpacing="0" cellPadding="0" class="css-l1mraf e2c2s613"><tr><td colSpan="3" style="text-align:center" class="css-1iuszfz e2c2s611"><a class="css-9th5vf ep11te10" href="https://www.glassdoor.com" target="_blank" universal="true"><img src="https://www.glassdoor.com/crs/mail/logos/glassdoor_tng_logo_green.png" alt="Glassdoor" title="Glassdoor" height="30" width="143"/></a></td></tr><tr><td colSpan="3" class="css-u6cj4z ep11te12"><h1 class="css-x3v1q8 e56kp3r0">Tech Digest</h1></td></tr><tr><td colSpan="3" class="css-nt1wjc ep11te12"><span class="css-3arti4 e56kp3r1">Hey wojciech!</span></td></tr><tr><td colSpan="3" class="css-ql0l4d ep11te12"><span class="css-16hggsa e56kp3r2">In case you missed it, here's what folks are talking about in your industry bowl.</span></td></tr><tr><td colSpan="3" class="css-l72z7c ep11te12"><a class="css-96uds2 ep11te10" href="https://www.glassdoor.com/Community/bowl-B55375ce690f5eebe1d2a0f88/post-P64bb65141f7dc5c308ecb90f.htm?uvk=yOrcnrn%3ARLwWTPT1NIz89oRKEmxow&utm_medium=email&utm_source=industryDigest&utm_campaign=industryDigest&utm_content=industryDigest" target="_blank" universal="true"><table cellSpacing="0" cellPadding="0" border="0" width="100%" class="css-1stwpoo e1p9qaam0" style="padding:0px"><tr><td class="css-1stwpoo e1p9qaam0" style="margin:0px"><table border="0" cellPadding="0" cellSpacing="0" width="100%"><tr><td class="css-1gxp3tr e1p9qaam2"><img src="http://www.glassdoor.com/crs/mail/icons/building-75x75.png" width="30" class="css-ba2w2p e1p9qaam1"/></td><td width="100%" class="css-glxy0g e1p9qaam3"><span class="css-9th5vf e1p9qaam4">Tech</span><br/>Software Engineer</td><td class="css-2dxww1 e1p9qaam5">7/22/23</td></tr><tr><td colSpan="3" class="css-du5m07 e1p9qaam6">How to tell my manager that my team hates working with this one particular no code tool that we have invested so much money, effort, and time in. I...<!-- --> <span class="css-d914bh e1p9qaam10">read more</span></td></tr><tr><td colSpan="3"><table border="0" cellPadding="0" cellSpacing="0"><tr><td><img src="https://www.glassdoor.com/crs/mail/icons/fishbowl_reactions.png" alt="[Reaction]" height="16"/></td><td class="css-rvlokx e1p9qaam7">8</td><td class="css-1ic066d e1p9qaam8"><img src="https://www.glassdoor.com/crs/mail/icons/fishbowl_bubble.png" width="16" alt="[Comment Bubble]"/></td><td class="css-rvlokx e1p9qaam9">10 Comments</td><td></td></tr></table></td></tr></table></td></tr></table></a></td></tr><tr><td colSpan="3" class="css-nt1wjc ep11te12"><table cellSpacing="0" cellPadding="0" border="0" width="100%" class="css-ip60z3 ep11te14" style="padding:0px"><tr><td class="css-ip60z3 ep11te14" style="margin:0px"></td></tr></table></td></tr><tr><td colSpan="3" class="css-l72z7c ep11te12"><a class="css-96uds2 ep11te10" href="https://www.glassdoor.com/Community/bowl-B55375ce690f5eebe1d2a0f88/post-P64bbb7408382ac0f09f5b490.htm?uvk=yOrcnrn%3ARLwWTPT1NIz89oRKEmxow&utm_medium=email&utm_source=industryDigest&utm_campaign=industryDigest&utm_content=industryDigest" target="_blank" universal="true"><table cellSpacing="0" cellPadding="0" border="0" width="100%" class="css-1stwpoo e1p9qaam0" style="padding:0px"><tr><td class="css-1stwpoo e1p9qaam0" style="margin:0px"><table border="0" cellPadding="0" cellSpacing="0" width="100%"><tr><td class="css-1gxp3tr e1p9qaam2"><img src="http://www.glassdoor.com/crs/mail/icons/building-75x75.png" width="30" class="css-ba2w2p e1p9qaam1"/></td><td width="100%" class="css-glxy0g e1p9qaam3"><span class="css-9th5vf e1p9qaam4">Tech</span><br/>Industrial Designer</td><td class="css-2dxww1 e1p9qaam5">7/22/23</td></tr><tr><td colSpan="3" class="css-du5m07 e1p9qaam6">I was recently hired by a startup that promised a bunch of stuff but didnâ