Canvas und Drag-and-Drop
Eine iframe-Canvas mit Auswahl, Drag-Zielen, Drop-Indikatoren, Größenänderung und einer Komponenten-Toolbar – die Interaktionsebene, die Monate braucht, um richtig zu machen, und für die niemand Ihr Produkt kauft.
PageKit — der selbst gehostete GrapesJS-Website-Builder, als Quellcode. Early Access sichern
Erstellen Sie einen visuellen E-Mail-Editor für Ihre SaaS, CMS, Marketingplattform oder interne Tools. Lassen Sie Nutzer responsive E-Mails mit Drag-and-Drop-Blöcken erstellen, während Ihr Team Komponenten, Vorlagen, Speicher, Ausgabe und Veröffentlichung kontrolliert.
Ihre Nutzer erstellen E-Mails visuell. Ihre Anwendung steuert das Erlebnis.
Dies ist ein echter GrapesJS-Editor, der auf dieser Seite läuft – kein Video und kein Screenshot. Ziehen Sie einen Block von rechts hinein, wählen Sie ein beliebiges Element aus, um es neu zu gestalten, wechseln Sie auf Handybreite und lesen Sie dann das erzeugte Markup aus. Header und Footer sind gesperrt – dasselbe Muster, das der Abschnitt weiter unten erklärt.
Was du hier tun kannst
Ein Drag-and-Drop-E-Mail-Builder ist ein visueller Editor, der es Nutzern ermöglicht, E-Mail-Layouts aus wiederverwendbaren Komponenten zu erstellen, anstatt manuell HTML-Tabellen und E-Mail-spezifische CSS zu schreiben.
Der Unterschied ist, wer die Regeln kennen muss. Ohne Builder muss derjenige, der die E-Mail schreibt, wissen, dass das Layout mit verschachtelten Tabellen gebaut wird, dass die meisten Stile inline stehen müssen und dass ein verirrter Rand das Design in einem einzigen Client zusammenfallen lässt. Mit einem Builder werden diese Regeln einmal – von Ihnen – in Blöcke und Komponenten kodiert, und alle anderen ordnen sie nur noch an.
Ohne einen visuellen Builder
Jemand schreibt das Tabellen-Markup von Hand und überprüft es dann von Hand. Jede neue E-Mail beginnt mit einer Kopie der vorherigen.
<table role="presentation" cellpadding="0" cellspacing="0" width="600">
<tr>
<td style="padding:32px;font-family:Arial,sans-serif">
<h1 style="margin:0 0 12px;font-size:26px">Welcome</h1>
<p style="margin:0;font-size:15px;line-height:1.6">Yunser Inhalt... </p>
</td>
</tr>
</table>Mit einem Drag-and-Drop-Builder
Jemand ordnet Blöcke. Das Tabellen-Markup wird aus Komponenten generiert, die du einmal definiert und überprüft hast.
Der Builder ist nicht dafür da, E-Mails einfach zu machen. Er ist dafür da, die schwierigen Teile zur Entscheidung von jemand anderem zu machen – zu Ihrer, einmal getroffen, auf Komponentenebene.
Eine Webseite läuft in einem Browser, mit dem man grob argumentieren kann. Eine E-Mail läuft in dem jeweiligen Client, in dem der Empfänger sie geöffnet hat, und dieser Kunde kann dein Markup umschreiben, deine Stile entfernen oder sie mit einer ganz anderen Engine anlegen. Ein E-Mail-Entwickler muss daher einschränken, was Nutzer produzieren können, nicht nur die Produktion angenehm gestalten.
Wo deine E-Mail überleben muss
Gmail
Web-, Android- und iOS-Apps verhalten sich unterschiedlich, und der Webclient verarbeitet deine Stile, bevor er rendert.
Outlook
Desktop, Web und der neuere Windows-Client sind im Grunde unterschiedliche Renderer. Desktop-Builds unter Windows waren historisch gesehen das strengste Ziel.
Apple Mail
Der toleranteste der üblichen Kunden, was ihn zu einem schlechten Proxy macht: Eine E-Mail, die hier direkt aussieht, kann auch anderswo kaputtgehen.
Yahoo Mail
Ein weiterer Webmail-Client mit eigenen Sanierungsregeln für Styles und Markup.
Mobile Clients
Schmale Ansichten, aggressive Textskalierung und Dunkelmodus-Behandlung, die je nach App und Betriebssystemversion variiert.
Alles andere
Unternehmens-Gateways, regionale Anbieter und ältere Kunden, die in einer typischen Testmatrix nie auftauchen.
Was das dem Builder abverlangt
Das Layout besteht aus Tabellen, nicht aus Flexbox oder Grid
Deine Spalten, Abstandshalter und Teiler müssen Tabellenkomponenten sein. Benutzer sollten niemals eine nackte Div in das Canvas einfügen können.
Die CSS-Unterstützung ist teilweise und ungleichmäßig
Beschränke den Style Manager auf Eigenschaften, die du tatsächlich getestet hast, anstatt das gesamte Browser-Set offenzulegen.
Die Stile sind am sichersten in der Reihe
Entweder schreibst du mit einem Preset, das beim Export inlinet, oder du betreibst einen Inliner in deiner eigenen Pipeline, bevor die E-Mail dein Backend verlässt.
Medienanfragen werden nicht universell anerkannt
Entwickle das Ein-Spalten-Rückfallback-System so, dass es bereits akzeptabel ist, und behandle responsive Regeln eher als Verbesserung denn als Voraussetzung.
Bilder werden oft standardmäßig blockiert
Verlangen Sie Alternativtext bei jeder Bildkomponente und lassen Sie niemals einen Block von einem Bild abhängen, um lesbar zu sein.
Der Dunkelmodus kann Ihre E-Mail umfärben
Manche Kunden drehen die Farben automatisch um oder verändern sie. Vermeiden Sie Designs, die darauf angewiesen sind, dass ein bestimmter Hintergrund genau diese Farbe bleibt.
Webschriften werden häufig nicht geladen
Gib für jede Textkomponente einen echten Fallback-Stack aus und überprüfe die E-Mail mit dem Fallback statt mit dem vorgesehenen Gesicht.
Skripte laufen nicht, und die Interaktivität ist begrenzt
Alles Dynamische gehört hinter einen Link. Ein Builder, der den Nutzern interaktive Blöcke anbietet, bietet ihnen etwas an, das nicht funktionieren wird.
Gewerbliche Post hat rechtliche Anforderungen
Absenderidentität und ein Abmeldemechanismus sind Verpflichtungen, keine Designentscheidungen. Sperren Sie sie in die Vorlage ein, anstatt einer Checkliste zu vertrauen.
Du baust keinen Editor, der wunderschöne HTML erzeugt. Du baust einen Editor, der kein gefährliches HTML erzeugen kann.
Das Client-Verhalten ändert sich mit Releases und Rendering-Modi, daher steht auf dieser Seite keine Pro-Client-Supportmatrix. Validiere es mit den Clients und Features, die dein eigenes Publikum tatsächlich nutzt. Zuletzt bewertet 2026-09-03.
GrapesJS ist ein Open-Source-(BSD-3-Clause) Web-Builder-Framework, derzeit 0.23.6, mit ungefähr 26k+-Sternen auf GitHub. Es gibt dir die Teile eines Editors, die teuer zu bauen und langweilig zu differenzieren sind, und nimmt die Teile ab, die tatsächlich dein Produkt sind.
Eine iframe-Canvas mit Auswahl, Drag-Zielen, Drop-Indikatoren, Größenänderung und einer Komponenten-Toolbar – die Interaktionsebene, die Monate braucht, um richtig zu machen, und für die niemand Ihr Produkt kauft.
Definiere eine E-Mail-sichere Komponente einmal und stelle sie dann als Block frei, den Nutzer einziehen. Komponenten tragen eigene Regeln: was sie akzeptieren, was bearbeitet werden kann, was gestylt werden kann.
Ein Styling-Panel, das du auf die Eigenschaften-E-Mail beschränken kannst, die die E-Mail tatsächlich unterstützt, und ein traits-Panel für Einstellungen, die nicht CSS sind – ein Link-Ziel, ein Alternativtext, ein Merge-Feld.
Ein Strukturbaum für verschachtelte Tabellen, die schwer durch Klicken auszuwählen sind, und einen Asset-Manager, den du auf deine eigene Medienbibliothek zeigen kannst.
Der gesamte Editor serialisiert zum Projekt-JSON. Richte das Storage Manager auf dein API, und der Editor kümmert sich nicht mehr darum, wo sich die Daten befinden.
Jede Editor-Aktion ist ein benannter Befehl, den du aufrufen, überschreiben oder hinzufügen kannst – so erweitern Presets, Exporter und die 100+-Plugins auf GJS.Market sie ohne Fork.
GrapesJS stellt die Bearbeitungsebene bereit. Ihre Anwendung stellt das E-Mail-Produkt bereit.
Ihr Produkt: Konten, Mandanten, Abrechnung, die Route, auf der der Editor eingebunden ist.
Deine Hülle rund um den Editor: Template-Picker, Speicherstatus, Senden-Button, Genehmigungen.
Die visuelle Bearbeitungs-Engine. Sie weiß über Komponenten und Leinwände Bescheid, aber nichts über deine Nutzer.
Die Editor-Subsysteme, die du konfigurierst: welche Blöcke existieren, was sie akzeptieren, was kann gestaltet werden, was bearbeitet werden kann.
Der serialisierte Editor-Status. Das ist das, was du speicherst, damit eine E-Mail später wieder geöffnet werden kann.
Dein API: Berechtigungen, Versionierung, Merge-Tag-Auflösung, Validierung, Kampagnendatensätze.
Der Aufschlag, den du tatsächlich schickst. Wird auf Abruf aus dem gespeicherten Projekt generiert.
Der Anbieter, der die Post zustellt und berichtet, was damit passiert ist.
Der Posteingang und der Client, der es gerade rendert.
GrapesJS kommuniziert nie mit deiner Datenbank und auch nie mit deinem E-Mail-Anbieter. Es gibt dir ein Dokument; alles danach ist deine Architektur.
Drei Eigentümer, keine Überschneidung. Der häufigste architektonische Fehler im Thema dieser Seite ist, dass der Editor etwas in den rechten Spalten tut.
Nichts in den rechten Spalten ist eine Lücke in GrapesJS – diese Zeilen waren nie die Aufgabe des Editors. Sie ab dem ersten Sprint als Anwendungsarbeit zu behandeln, hält die Integration einfach.
Drei Artefakte stammen aus demselben Canvas, und sie sind nicht austauschbar. Eines ist das Projekt, das man behält, zweitens die Lieferformate, die man daraus generiert.
Die editierbare Darstellung der E-Mail – Komponenten, Stile, Assets und Seiten, genau so, wie der Editor sie hält.
Am besten für
Wie du es bekommst
editor.getProjectData()Das ist die Version, die gespeichert werden sollte. Wenn nur gerendertes HTML gespeichert wird, beginnt die nächste Bearbeitung mit geparstem Markup und nicht aus dem vom Benutzer erstellten Dokument.
Das tabellenbasierte Aufschlag, das Sie einem sendenden Anbieter übergeben, mit eingebetteten Stilen, damit mehr Kunden sie behalten.
Am besten für
Wie du es bekommst
editor.runCommand('gjs-get-inlined-html')Der Inline-Befehl kommt aus dem Newsletter-Preset, nicht vom GrapesJS-Kern. Ohne ihn bekommt man das Canvas-Markup und ein Stylesheet, was man nicht senden möchte.
Eine höherstufige Markup-Sprache für E-Mails, die zu einer responsiven Tabelle HTML kompiliert.
Am besten für
Wie du es bekommst
editor.runCommand('mjml-code')MJML ist ein separates Ökosystem: Das Editor-Plugin rendert MJML-Komponenten, und ein Compiler wandelt sie in HTML um. Beides sind Drittanbieter-Pakete, die du hinzufügst.
JSON ist das Projekt. HTML und MJML sind die Lieferung. Speichere das erste, generiere die anderen.
Von dem Canvas zum Posteingang
Geben Sie den Nutzern keine leere Canvas und einen Div. Liefern Sie eine kleine Auswahl an Komponenten aus, die bereits das Tabellen-Markup, die Inline-Stile und die Rücklagen kodieren, und lassen Sie sie dann anordnen. Diese zehn decken den Großteil ab, was Marketing und Lebenszyklus-E-Mails tatsächlich brauchen.
Logo, Markenleiste, Vorkopftext. Meistens gesperrt, sodass jede E-Mail mit derselben Identität abgeschlossen wird.
Überschrift, unterstützende Zeile und eine Aktion. So groß, dass die Nachricht überlebt, ohne dass das Bild geladen wird.
Ein Absatzblock mit einem echten Schriftart-Fallback-Stack und Zeilenhöhe, die bei Telefonbreiten Bestand hat.
Feste Breite, explizite Maße und erforderlicher Alternativtext, sodass ein blockiertes Bild weiterhin eine lesbare E-Mail hinterlässt.
Ein tabellenbasierter Button statt eines gestalteten Ankers – der Unterschied ist bei strengeren Clients sichtbar.
Eine Tabellenzeile, die auf schmalen Viewports gestapelt wird — die Reihenfolge der Stapelung legen Sie vorher fest.
Bild, Name, Preis und Link, gesteuert von Feldern, die dein Backend ausfüllt, statt per Kopieren und Einfügen.
Eine feste Reihe von Symbolen und URLs, die als Einstellungen und nicht als Markup bearbeitet werden kann.
Eine Linie, die mit einem Tabellenrahmen statt mit einem <hr>-Element gezeichnet wird — mehrere E-Mail-Clients stylen <hr> um.
Absenderidentität, Adresse und Link zum Abmelden. Normalerweise gesperrt, da dies Verpflichtungen sind.
Lassen Sie Nutzer visuell gestalten, ohne dass sie E-Mail-HTML verstehen müssen.
Eine Komponente ist die Definition; ein Block ist, wie ein Nutzer einen auf das Canvas bringt. Die Blockbibliothek ist der stärkste Hebel, den man über das haben kann, was Menschen bauen können – und der einfachste, um durch Großzügigkeit falsch zu liegen.
Die Schleife, die deine Nutzer wiederholen
Jedes verfügbare Element, jeder Stil bearbeitbar, keine Meinung zur Struktur.
Eine kurze Liste von Blöcken, die du entworfen, getestet und zentral ändern kannst.
Drei Ebenen, und deren Verwirrung macht es schwer, E-Mail-Builder zu entwickeln. Komponenten sind, was Dinge sind, Blöcke sind der Weg, wie sie hinzugefügt werden, Vorlagen sind fertige Ausgangspunkte.
Vorlagen
Eine ganze E-Mail, von der ein Nutzer starten kann – Newsletter, Quittung, Onboarding-Schritt. Als Projekt JSON gespeichert, bei der Nutzung geklont.
Blöcke
Die ziehbaren Einheiten, aus denen eine Vorlage zusammengesetzt wird: ein hero, eine Artikelreihe, ein CTA-Band, ein Footer.
Komponenten
Die editierbaren Primitiven in einem Block, mit eigenem traits und eigenen Regeln – eine Produktkarte, die weiß, dass sie einen Preis hat.
Baue zuerst die Komponenten, dann die Blöcke, die sie offenlegen, und dann die Vorlagen, die sie anordnen. Teams, die auf Vorlagenebene starten, haben am Ende Dutzende nahezu identische Designs und keine Möglichkeit, eines davon zu ändern.
Eine Newsletter-Vorlage, erweitert
Vorlage für den Newsletter
Jedes Kind ist ein Block; jeder Block besteht aus Komponenten. Ändere den Artikelblock einmal, und jeder Newsletter, der aus dieser Vorlage erstellt wurde, nimmt ihn beim nächsten Öffnen auf.
Das Sperren in GrapesJS ist kein Modus oder eine Planstufe – es ist eine Menge von Optionen auf einer Komponentendefinition. Ein gesperrter Bereich rendert weiterhin, exportiert weiterhin und weigert sich einfach, im Editor gezogen, gelöscht oder neu gestaltet zu werden.
Firmenkopf
GesperrtIn jeder E-Mail anwesend, identisch in jeder E-Mail. Niemand muss sie verschieben.
Editierbarer Inhalt
EditierbarText und Bilder, die der Absender tatsächlich schreiben möchte.
Aufruf zum Handeln
EditierbarEditierbares Etikett und Link sowie eine kurze Liste der Farben – nicht die darunterliegende Markierung.
Rechtlicher Footer
GesperrtAbsenderidentität und Link zum Abmelden. Eine Verpflichtung, keine Designentscheidung.
Die Optionen, die sie hervorbringen
removable: false, draggable: falseeditable: truestylable: ['background-color', 'color']removable: false, copyable: falseWas dir das bringt
Diese Optionen steuern den Editor UI. Sie sind keine Autorisierung. Ein modifiziertes Projekt, das direkt an deinem Speicherpunkt gepostet wird, ist nur durch das begrenzt, was dein Server validiert – also validiere jedes Mal die Struktur, die erforderlichen Regionen und die erlaubten Felder im Backend.
Personalisierte E-Mails bestehen aus zwei getrennten Problemen: einem Nutzer zu erlauben, einen Platzhalter zu platzieren, ohne die Syntax zu kennen, und diesen Platzhalter mit echten Daten zum Zeitpunkt des Senden zu lösen. Der Editor löst das erste. Nur deine Anwendung kann das zweite lösen.
Tags in der Vorlage zusammenführen
{{first_name}}{{company_name}}{{order.total}}{{unsubscribe_url}}Für den Editor handelt es sich hierbei um gewöhnlichen Text. Sie werden genau so gespeichert, wie sie geschrieben sind, erhalten bleiben, öffnen und exportieren unberührt.
Wie Nutzer sie einfügen
Stellen Sie die verfügbaren Felder als Merkmal in Ihrer Textkomponente bereit – ein Dropdown-Menü mit "Vorname", "Unternehmen", "Bestellgesamt" – und schreiben Sie das Token selbst in den Inhalt. Nutzer wählen ein Feld aus; sie lernen nie eine Syntax und können kein Tag erfinden, das Ihr Renderer nicht kennt.
Dynamische Blöcke
Ein Block kann ein Platzhalter für Inhalte sein, die noch nicht existieren. Der Nutzer fügt eine Produktkarte ein und konfiguriert, welche Produkte angezeigt werden sollen; die Werte kommen an, wenn die E-Mail gerendert wird.
GrapesJS bietet das Bearbeitungserlebnis. Ihr Backend löst dynamische Daten und Merge Tags auf, wenn die E-Mail gerendert oder gesendet wird.
Zwei Breiten decken fast die gesamte Designprüfung ab: die Breite, in der die E-Mail verfasst ist, und ein Telefon. Beide sind im Editor nur ein Geräteschalter entfernt, und keines ist dasselbe wie das Testen.
Der Workflow, der tatsächlich Probleme erkennt
Eine In-Editor-Vorschau ist dein Browser, der das Canvas-Markup rendert. Ein Mail-Client rendert eine transformierte Version dieses Markups über seine eigene Engine, und die beiden können unterschiedlich sein. Preview dient der Designprüfung; eine Seed-Liste oder ein Rendering-Service dient der Kompatibilität.
Die meisten E-Mail-Katastrophen sind keine Fehler. Sie sind ein defekter Link, ein unbefülltes Merge-Tag oder ein fehlendes Abmelden. Alle drei sind auf dem Server günstig zu entdecken und teuer im Posteingang.
Führe sie aus, bevor eine Vorlage aus dem Entwurf herauskommen kann.
Günstig zu automatisieren und der häufigste Einzelausfall.
Nicht verhandelbar, also setze es im Code durch, statt in einer Checkliste.
Das Storage Manager ist eine Schnittstelle, keine Datenbank. Implementiere es an deinem eigenen API, und der Editor lädt, speichert und stellt automatisch über die von dir kontrollierten Endpunkte wieder her – und genau dann werden Entwürfe, Versionen und Genehmigungen überhaupt noch möglich.
Der Lebenszyklus, den Ihr Backend definiert
// The editor hands you project JSON; your backend decides
// what a draft, a version and an approved template mean.
editor.Storage.add('email-api', {
async load({ templateId }) {
const res = await fetch(`/api/email-templates/${templateId}`);
return res.json(); // -> project JSON
},
async store(data, { templateId }) {
await fetch(`/api/email-templates/${templateId}`, {
method: 'PUT',
headers: { 'Content-Type': 'application/json' },
// Authorization is enforced server-side. Never trust this call.
body: JSON.stringify({ project: data }),
});
},
});Autosave wird durch die Anzahl der Änderungen und nicht durch einen Timer gedrosselt, daher kostet ein Burst von Bearbeitungen immer noch eine Anfrage. Behalte Versionen als unveränderliche Kopien des Projekts JSON – eine Wiederherstellung einer Version kostet dann nur eine Ladung, und eine schlechte Bearbeitung ist kein Vorfall mehr.
Nichts an dieser Architektur verlangt von dir, die Art und Weise zu ändern, wie du Post versendest. Der Editor erstellt ein Dokument; dein Backend rendert es und übergibt es an den Anbieter, für den du bereits bezahlst.
GrapesJS
Produziert das Projekt und auf Anfrage den Aufschlag. Weiß nichts über Empfänger.
HTML / MJML
Sie werden auf Abruf aus dem gespeicherten Projekt generiert, mit eingearbeiteten Stilen oder MJML-kompiliert.
Dein Backend
Löst Merge-Tags, validiert das Ergebnis, zeichnet die Kampagne auf, ruft den Anbieter an.
Dein E-Mail-Anbieter
Es wird die Post zugestellt und die Berichte werden gebouncet, beschwerden, geöffnet und zu Ihnen zurückgeklickt.
Beispiele, wo dein Backend postet
Alphabetisch aufgelistet als Illustrationen des letzten Hops. Jeder Anbieter mit einem HTTP-API- oder SMTP-Endpunkt hat die gleiche Form, und das Austauschen eines gegen einen anderen berührt den Editor nicht.
GrapesJS ist der Editor, nicht dein E-Mail-Zustelldienst.
Weder GrapesJS noch GJS.Market liefern eine Integration mit einem der oben genannten Anbieter aus, und es wird keine Partnerschaft impliziert. Die Lieferung von Authentifizierung, Authentifizierung und Unterdrückung bleiben in der Verantwortung Ihres Anbieters und Ihrer Anwendung.
// Server side. GrapesJS is not in this file — and that is the point.
const template = await db.emailTemplates.find(templateId);
// 1. Your application resolves merge tags. The editor never does.
const html = renderMergeTags(template.html, {
first_name: user.firstName,
unsubscribe_url: unsubscribeUrlFor(user),
});
// 2. Your ESP delivers it. Swap the client, keep the editor.
await esp.send({ to: user.email, subject: template.subject, html });Die gleiche Bearbeitungsebene, auf acht verschiedene Arten verpackt. Was sich zwischen ihnen ändert, ist, wer bearbeitet, was sie ändern dürfen und wohin die Ausgabe geht.
Lassen Sie Kunden Lebenszyklus- und Kampagnen-E-Mails innerhalb Ihres Produkts gestalten, basierend auf Vorlagen und Blöcken, die Sie pro Plan kontrollieren.
SaaS-Builder-ArchitekturGib einem Marketingteam einen visuellen Editor für ein wiederkehrendes Format mit einem Artikelblock, der jede Ausgabe konsistent hält.
Newsletter-PluginsVerfassen Sie die E-Mails, die in Kampagnen und Arbeitsabläufen liegen, und teilen Sie Blöcke mit den Landingpages, auf die sie zeigen.
Landingpage-BuilderStreng kontrollierte Vorlagen für Quittungen und Benachrichtigungen – größtenteils gesperrt, mit einer kleinen editierbaren Mitte.
Template-SystemeLasst Content-Teams die Blöcke, mit denen sie bereits Webinhalte schreiben, wiederverwenden und neben dem Rest des Inhaltsmodells speichern.
Headless-CMS-BearbeitungEin Editor, ein gebrandeter Block pro Kunde und Vorlagen, die zwischen den Bewertungen nicht aus der Form gebracht werden können.
White-Label-BuilderGib internen Teams einen kontrollierten Editor statt einer gemeinsamen HTML-Datei und einer Anfrage-Warteschlange.
No-Code für EntwicklerLass den Editor so aussehen und sich wie Teil deines Produkts verhalten, bis hin zu den Panels, den Icons und der Sprache.
White-label den EditorKein Urteil, sondern ein Scope-Check. Jede Zeile ist etwas, das ein E-Mail-Builder braucht. Die linke Spalte zeigt Arbeiten, die du besitzen würdest; die rechte ist das, was GrapesJS dir gibt, bevor du eine Komponente schreibst.
| Leistungsfähigkeit | Von Grund auf | Mit GrapesJS |
|---|---|---|
| Visuelles Canvas | Selbst bauen | Verfügbar |
| Drag & Drop | Selbst bauen | Verfügbar |
| Komponentenmodell | Selbst bauen | Verfügbar |
| Blockbibliothek | Selbst bauen | Erweiterbar |
| Stilbearbeitung | Selbst bauen | Verfügbar |
| Ebenenbaum | Selbst bauen | Verfügbar |
| Rückgängig machen / neu machen | Selbst bauen | Verfügbar |
| Asset-Verwaltung | Selbst bauen | Verfügbar |
| Speicherintegration | Selbst bauen | Konfigurierbar |
| Individuelle Komponenten | Selbst bauen | Unterstützt |
| Plugin-Architektur | Selbst bauen | Unterstützt |
"Verfügbar" heißt, dass die Fähigkeit im Kern enthalten ist und konfiguriert, nicht gebaut werden muss. Es heißt nicht, dass keine Arbeit anfällt: Jeder ernsthafte E-Mail-Builder definiert eigene Komponenten, beschränkt die eigenen Stile und schreibt seinen eigenen Storage-Adapter. Geprüft gegen grapesjs 0.23.6 am 2026-09-03.
Baue dein E-Mail-Produkt, nicht eine weitere Editor-Engine.
Echte Einträge aus dem GJS.Market-Katalog, gruppiert nach der Bauphase, zu der sie gehören. Namen, Preise und Bilder stammen direkt vom Marktplatz, daher sehen Sie hier das, was heute tatsächlich zum Verkauf steht.
Was einen Seiteneditor in einen E-Mail-Editor verwandelt: tabellenbasierte Blöcke, ein E-Mail-förmiges Style Manager, Import und Export.
Durchstöbern Sie die KategorieFertige E-Mail-Bereiche und eine Möglichkeit, dass Nutzer ihre eigenen speichern können.
Durchstöbern Sie die KategorieEine entworfene Reihe von responsiven E-Mail-Blöcken, damit Ihre erste Blockbibliothek keine leere Liste ist.
Erlauben Sie Benutzern, ihre eigenen Arrangements als wiederverwendbare Blöcke zu speichern, ohne den Komponentencode zu berühren.
Eine Bibliothek von Startpunkten, sodass niemand eine E-Mail von einer leeren Canvas startet.
Durchstöbern Sie die KategorieFür den einen Teil einer E-Mail, der handschriftlich sein muss – ein Tracking-Pixel, ein anbieterspezifischer Block, ein legaler Ausschnitt.
Durchstöbern Sie die KategorieEin Vermögensverwalter, der durch Speicher unterstützt wird, der den Entwurf überdauert, denn eine fehlerhafte Bild-URL ist eine defekte E-Mail.
Durchstöbern Sie die KategorieUnterstützt den Asset Manager mit Cloudinary, damit E-Mail-Bilder eine dauerhafte, transformierbare URL haben.
Ein Upload von UI vor dem Asset Manager, mit Fortschritten, erneuten Versuchen und mehreren Quellen.
Tausche den Standard-Uploader gegen Filestack, inklusive eigenem Picker und Transformationen.
Wo sich das Projekt JSON befindet und wie oft der Editor es schreiben darf.
Durchstöbern Sie die KategoriePersistiere Projekt JSON auf Firebase, ohne vorher einen Speicheradapter zu schreiben.
Behalten Sie E-Mail-Projekte in Directus zusammen mit dem Rest Ihres Inhaltsmodells.
Rate-Limit speichert, sodass ein Burst von Bearbeitungen eine Anfrage statt Dutzende kostet.
Exportiere das fertige Dokument für die Übergabe, Überprüfung oder eine bestehende Build-Pipeline.
Durchstöbern Sie die KategorieEinige Funktionen auf dieser Seite haben kein Plugin dahinter, und dieser Abschnitt wird keines erfinden: Es gibt kein Vorschau- oder Spam-Check-Produkt, kein CSS-Inliner-Produkt, kein Merge-Tag-Produkt und kein fertiges E-Mail-Vorlagenprodukt im Katalog. Diese werden hier als Muster beschrieben, die man implementieren kann, oder als Arbeit, die unser Team mit Ihnen erledigen kann.
Vier Builds, zusammengesetzt ausschließlich aus heutigen Angeboten. Beginne in der Reihe, die zu dem passt, was du auslieferst, und füge die nächste Ebene hinzu, wenn sie ihren Platz gefunden hat.
Ein erster interner Editor: Blöcke ziehen, Vorlage speichern, HTML exportieren.
MJML-Authoring, ein entworfenes Blockset, Vorlagen und eine Escape-Luke pro Komponente.
Kundenorientiert: MJML-Ausgabe, Vorlagendaten, Remote-Speicher und gedrosseltes autosave.
Der Editor eines Marketingteams: Blöcke, Vorlagen und gehostete Assets, die den Entwurf überdauern.
Die Preise stammen aus dem Live-Katalog zur Bauzeit. Kostenlose Angebote werden markiert; bezahlte verlinken direkt auf ihre Produktseite.
Die Form des Werks, in der Reihenfolge, in der es sinnvoll ist. Jeder Schritt führt zu dem Leitfaden, der es richtig behandelt – diese Seite ist eine Karte, kein Tutorial.
Mounte GrapesJS auf einem Container, setze die E-Mail-Anforderungen der beiden Geräte und schalte den Standardspeicher vor allem anderen aus.
GrapesJS-Einrichtungsanleitung →Schreiben Sie die tabellenbasierten Komponenten, aus denen Ihre E-Mails bestehen, beschränken, was gestylt werden kann, und stellen Sie jede als Block bereit.
E-Mail-Komponenten in der Tiefe →Gib den Nutzern einen Anfangspunkt. Speichere Vorlagen als Projekt JSON und klone sie bei Gebrauch, anstatt das Original zu bearbeiten.
Template-Systeme →Implementiere einen Speicheradapter an deinem API, damit Entwürfe, autosave und Versionen von dir definiert werden können.
Speicher-Plugins →Generiere das Markup beim Senden, löse Merge-Tags serverseitig auf und übergebe das Ergebnis deinem Anbieter.
Hol dir Hilfe beim Bau →import grapesjs from 'grapesjs';
import newsletter from 'grapesjs-preset-newsletter';
const editor = grapesjs.init({
container: '#email-editor',
height: '100%',
// Email is authored at a fixed width; give users one extra viewport
// to check, not a full responsive breakpoint set.
deviceManager: {
devices: [
{ id: 'desktop', name: 'Desktop', width: '' },
{ id: 'mobile', name: 'Mobile', width: '375px' },
],
},
// Curated blocks only: the preset's table sections, plus your own.
plugins: [
(ed) => newsletter(ed, { inlineCss: true, showBlocksOnLoad: true }),
],
// Point the editor at your API rather than the browser's localStorage.
storageManager: {
type: 'remote',
autosave: true,
stepsBeforeSave: 10,
},
});// An email-safe button: users edit the label and the link,
// never the table markup that makes it render in Outlook.
editor.DomComponents.addType('email-button', {
isComponent: (el) => el.dataset?.type === 'email-button',
model: {
defaults: {
draggable: '[data-gjs-type="cell"], td',
// Users may recolour it; they may not restyle it into a div.
stylable: ['background-color', 'color', 'border-radius'],
traits: [
{ name: 'href', label: 'Link' },
{ name: 'label', label: 'Button text' },
],
components: `
<table role="presentation" cellpadding="0" cellspacing="0">
<tr><td><a href="#">Read the update</a></td></tr>
</table>`,
},
},
});Beide Samples laufen gegen grapesjs 0.23.6. 'grapesjs-preset-newsletter' und 'grapesjs-mjml' sind separate BSD-3-Clause-Pakete – der Kern wird ohne E-Mail-Preset ausgeliefert – also installieren Sie das Format, das dem oben gewählten Ausgabeformat entspricht.
Was unterscheidet eine funktionierende Demo von einem E-Mail-Builder, den man den Kunden geben kann? Alles hier ist deine Arbeit, nicht die des Editors.
Was Nutzer tun können und was nicht.
Nichts, was ein Nutzer erstellt, sollte verloren werden können.
Jedes Mal auf dem Server validiert.
Die Teile, die nicht mit Design zu tun haben.
Ein E-Mail-Builder akzeptiert von Nutzern erstelltes Markup und sendet es an Dritte. Diese Kombination verdient mehr Sorgfalt als eine typische CRUD-Funktion.
Risiko
Gesperrte Regionen, eingeschränkte Stile und versteckte Blöcke befinden sich im Browser. Eine erstellte Anfrage kann jedes beliebige Projekt posten.
Was zu tun ist
Validiere das gespeicherte Projekt auf dem Server: erforderliche Regionen vorhanden, Komponententypen auf einer Zulassungsliste, Felder innerhalb der Grenzen.
Risiko
Eine Code-Embed-Komponente ist eine Feature-Anfrage, die auf jedem E-Mail-Builder ankommt und eine Injektionsfläche ist, die auf die Posteingänge Ihrer Kunden zeigt.
Was zu tun ist
Desinfizieren Sie das gespeicherte Markup und desinfizieren Sie es beim Rendern erneut. Beschränken, wer eine Codekomponente verwenden darf, und protokollieren Sie jede Nutzung davon.
Risiko
Uploads, die von einem Editor erreicht werden, landen auf öffentlichen URLs, die so lange bestehen wie die E-Mail.
Was zu tun ist
Typ und Größe auf dem Server validieren, Bilder neu kodieren und Assets von einer Domain bereitstellen, die keine Session-Cookies enthält.
Risiko
Das Rendern und Senden sind die teuren, irreversiblen Operationen. Sie werden in der Regel weniger sorgfältig geschützt als der Editor-Weg.
Was zu tun ist
Autorisieren Sie pro Vorlage und pro Empfängerliste, Versand von Zinsbegrenzungen und eine zweite Kontrolle, bevor etwas an ein volles Publikum geht.
Risiko
Ein permissiver Template-Renderer interpoliert gerne ein Feld, das der Sender eigentlich nie sehen sollte.
Was zu tun ist
Resolve gegen eine explizite Erlaubnisliste von Feldern für diese Vorlage und das Rendern bei einem unbekannten Tag fehlschlagen, anstatt es auszusenden.
Der Editor ist eine große Abhängigkeit, die in deiner Anwendung lebt. Das sind die Hebel, die zählen, in der Reihenfolge, in der sie sich normalerweise auszahlen.
Lade den Editor träge
Importiere es nur auf der Route, die eine E-Mail bearbeitet, und nur im Browser. Nichts am Editor gehört in ein Server-Rendering oder in dein Hauptbundle.
Lazy-Load-optionale Plugins
Ein Code-Viewer, ein Bildeditor oder ein MJML-Compiler können erscheinen, wenn der Benutzer dieses Panel öffnet, anstatt auf init.
Halte die Blockbibliothek kurz
Jeder Block wird beim Start mit Markup geparst und eine Karte in der Palette gerendert. Ein kuratiertes Set ist schneller und sicherer.
Debounce autosave
Drosseln Sie nach Änderungsanzahl statt nach Tastendrücken, sodass ein Tippstoß eine Anfrage statt dreißig erzeugt.
Halte die Projektdaten schlank
Referenziere Assets nach URL. Base64-Bilder im Projekt JSON machen jede Lade-, Speicher- und Versionskopie schwerer.
Achten Sie auf eigene Komponenten
Komponentenlogik, die bei jeder Änderung läuft, ist die übliche Ursache für eine Canvas, die sich bei langen E-Mails träge anfühlt.
Absichtlich werden hier keine Zahlen genannt: Die Zahlen hängen von Ihrer Blockanzahl, Ihrer Komponentenlogik und der Hardware Ihrer Nutzer ab. Messen Sie den Editor-Weg in Ihrer eigenen Anwendung vor und nach jeder Änderung.
Jetzt, da die Architektur klar ist, lässt sich der Kompromiss leicht benennen. Ein gehosteter Builder ist schneller vor einen Kunden zu stellen; ein Builder, den Sie besitzen, ist ein Merkmal Ihres Produkts und nicht eine Abhängigkeit davon.
Ein einbettbarer Editor, der von einem Anbieter betrieben wird und über deren API und deren UI integriert ist.
Was du bekommst
Schnellster Weg zu einem funktionierenden Editor, wobei die Roadmap und die Preise von jemand anderem übernommen werden.
Vergleichen Sie es mit einem gehosteten AnbieterEine Open-Source-Bearbeitungsschicht, die Sie konfigurieren, erweitern und als Teil Ihrer eigenen Anwendung bereitstellen.
Was du bekommst
Mehr Arbeit im Voraus und ein Editor, der mit deinem Produkt wächst statt darum herum.
Jetzt loslegenGehostete Plattformen unterscheiden sich erheblich voneinander, weshalb in der linken Spalte steht: "Hängt vom Anbieter ab" statt eine pauschale Aussage zu treffen. Überprüfen Sie die Bedingungen des jeweiligen Anbieters bezüglich Datenstandort, Speicherhaltung, Anpassungsgrenzen und was mit Ihren Vorlagen passiert, wenn Sie gehen.
GrapesJS rendert in ein einfaches DOM-Element, daher ist die Integration eine Frage, welcher Lebenszyklus-Hook init aufruft und welcher destroy. Dein Framework treibt deine Anwendung an; GrapesJS steuert die visuelle E-Mail-Bearbeitungsebene.
Wenn Sie lieber möchten, dass das funktioniert, als es zu recherchieren, entwickelt unser Team GrapesJS-basierte E-Mail-Editoren als Service – einschließlich der Teile dieser Seite, die kein Plugin enthalten.
Geben Sie Ihren Nutzern eine visuelle Möglichkeit, E-Mails zu erstellen, ohne Ihr Entwicklungsteam dazu zu zwingen, einen E-Mail-Editor von Grund auf neu zu entwickeln.
Sagen Sie uns, was der Editor tun muss, und erstellen Sie einen Rahmen für die Integration.
Jetzt loslegenPresets, Blöcke, Vorlagen, Speicher- und Asset-Plugins vom Marktplatz.
Entdecken Sie E-Mail-PluginsKomponenten, Vorlagen, Speicher und Veröffentlichungen, geliefert an deinem Stack.
Sprich mit einem GrapesJS-ExpertenIhre Nutzer erstellen die E-Mails. Ihr Produkt besitzt das Erlebnis.