Tudásbázis
Sablonok
Egyszer megírt, verziózott törzs, amelyet sokszor küldhet el: a szerkesztőből, a saját kódjából vagy egy ügynökkel.
Részletek
- A sablon a kapcsolathoz tartozik, nem ahhoz, aki megírta – pontosan ezért cseréltük le az első változatát. Az a felhasználóra volt kulcsolva: egy csapattárs sablonját a munkaterületi API-kulcs nem látta, így egy integráció nem tudta elküldeni azt, amit a beállítója látott, a szerző fiókjának törlésével pedig a munkaterület sablonjai is elvesztek. A sorokat átvittük, nem dobtuk el.
- A törzset kétféleképpen írhatja meg. Vagy blokkfaként a
@react-email/componentskomponensei fölött (Section, Row, Column, Container, Text, Heading, Button, Link, Img, Hr, Markdown, CodeBlock, CodeInline), amelyet írás közben ellenőrzünk, így a hibás csomópontot vagy a nem biztonságoshrefértéket már az azt beíró hívás visszautasítja, ahelyett hogy elromlott levélként érkezne meg. Vagy saját magával renderelt kóddal: ha a sablonjai már react-email komponensek a saját repójában, rendereljen ott a@react-email/rendersegítségével, és küldje be a HTML-t, amelyet a verzió közzétételekor egyszer megtisztítunk. - Huszonhárom kiindulópont és egy üres, galériában és nem menüben, mert ezeket meg kell nézni ahhoz, hogy választani lehessen közülük, ezért minden kártya magát a levelet mutatja. Üdvözlés és megerősítés, nyugták és számlák, szállítás és megújítás, összefoglalók és bejelentések, négy cím alá rendezve, és mindegyik a vizuális szerkesztőben nyílik meg, ahol minden darab mozgatható, átstílusozható és törölhető. Bármelyiket választja, vázlatként érkezik, így semmi sem küldhető el, amíg közzé nem teszi.
- A galéria ennek az egyetlen olyan része, amely csak az alkalmazásban érhető el. A sablonokhoz a saját kódjából vagy egy ügynöktől forduló hívó törzset küld be (blokkdokumentumot vagy saját kódot), nem pedig kiindulópontot nevez meg, így a huszonhárom sablon kezdőpont, nem pedig telepíthető katalógus.
- A megnevezett slotok és a megnevezett propok a kétféle kihagyott hely, a törzsben és a tárgyban {{key}} alakban írva. A slotot az tölti ki, aki a sablont szerkeszti, és van alapértelmezett értéke, így egy olyan küldés is renderel, amely semmit nem nevez meg. A propot küldéskor adja meg, és a kötelezőnek jelölt prop hiánya visszautasítja a küldést: 422, és nem megy ki levél. Éppen ez a visszautasítás a deklarálás értelme: az alternatíva egy olyan üzenet, amely üresen hagyja a rendelésszám helyét, amit semmi nem jelez, és senki nem tud visszahívni.
- A közzétett verzió befagyasztva marad. Egy közzétett sablon törzsének szerkesztése új vázlatot hoz létre, nem írja felül az éleset, így a küldések ugyanazt oldják fel, amit tegnap, amíg valaki közzé nem teszi az újat, a verziószámot rögzítő küldést pedig még ez sem érinti. A törzs közzétételkor fordul le, és ettől lesz az, hogy egy nem renderelhető sablon a közzétevőnél hibázik, nem a címzettnél.
- Az előnézet pontosan azt rendereli, amit a küldés előállítana, anélkül hogy elküldené, és jelzi, mi maradt üresen, ahelyett hogy visszautasítaná. Az előnézetben lévő sablon rendszerint éppen íródik, és annak, aki blokkonként tölti fel, nem kell minden propot kielégítenie ahhoz, hogy lássa, hol tart.
- Minden sablon saját nyilvántartást vezet arról, mit küldött: hány ment ki az elmúlt hét, harminc vagy kilencven napban, melyeket nyitották meg és melyekre kattintottak, napi bontású idősor, valamint egy bontás arról, honnan indult az egyes küldések: a szerkesztőből, a kódjából, egy ügynöktől vagy a sorból. Minden arány a saját nevezőjét nevezi meg, nem kölcsönöz másét, mert ezek valóban különböznek: a megnyitásokat a pixelt hordozó üzenetekre, a kattintásokat az átírt hivatkozást hordozó üzenetekre számoljuk, és egy üzenet hordozhatja az egyiket a másik nélkül. Az előnézetet egyáltalán nem rögzítjük, a tesztküldést pedig külön számoljuk és kihagyjuk minden számadatból, mert az soha nem ment ki.
- Ez a nyilvántartás őszintén megmondja, mit nem lát, és éppen ezért lehet megbízni abban a felében, amit lát. Egy küldést maga a küldés köt össze a kézbesítési rekordjával, és csak a saját kódjából vagy a sorból küldött levél hordoz ilyet. A szerkesztőből, egy ügynöktől vagy az asszisztenstől küldött üzenet nem. Így egy főként a szerkesztőből használt sablon küldéseinek nagy része párosítatlan marad, a párosítatlanok számát pedig külön számként mutatjuk, nem soroljuk be úgy, mintha senki nem nyitotta volna meg.
- Négy felület egyetlen szolgáltatás fölött, így a „mit jelent a közzététel” kérdésre egy válasz van, nem három, amelyek ma még egyetértenek. A szerkesztő Sablonok gombja a közzétetteket kínálja fel, és a választottal LECSERÉLI az üzenetet, nem pedig beilleszti: a küldés a sablont nevezi meg, a verzió a választás pillanatában rögzül, a törzs pedig ott renderelődik, ahol megírták, így a választás és a kattintás között történő közzététel nem változtathatja meg, mi megy ki, és egy olyan elrendezés is sértetlen marad, amelyet a szerkesztő nem tudott volna megtartani. Amit ott kitölt, azok az értékek, nem a törzs. A /templates kilenc végpont a templates:read és a templates:write hatókörök mögött, amelyeket az SDK metódusról metódusra becsomagol. Az elküldéshez a sablonjogosultság mellett küldési jogosultság is kell, így egy szövegíró eszköznek kiadott kulcs írhat és tehet közzé anélkül, hogy bárkinek levelet küldhetne. Az MCP-kiszolgáló öt eszközt hordoz: listázás, olvasás, előnézet, létrehozás és küldés. Szándékosan nincs eszköz meglévő sablon módosítására, törlésére vagy közzétételére. Egy szerkesztés olyan vázlatot hoz létre, amelyre a következő küldés nem oldana fel, egy törlést pedig nem lehet visszavonni. A tárolt törzs szerkesztése képernyő: a /workspace/templates blokkvásznat kínál palettával és felügyelővel, mellette élő előnézettel, a Mentés és a Közzététel pedig külön művelet, és éppen ettől lesz a közzétett verzió olyasmi, amit békén hagyhat, miközben a következőn dolgozik.
- Kapcsolatonként 200 sablon, blokkdokumentumonként legfeljebb 500 blokk, nyolc szintnyi egymásba ágyazás, egyetlen értékben 20 000 karakter, valamint 100 slot és 100 prop; a kódként beküldött törzs egymillió karakternél, a tárgy 998-nál van maximálva. Ezek mindegyike az elszabadult szkriptek elleni védelem, nem csomaghatár, mindegyik olyan üzenettel utasít vissza, amely megnevezi a túllépett számot, és a sablonokból semmi nem függ előfizetési szinttől.