कैनवास और ड्रैग-एंड-ड्रॉप
चयन के साथ एक iframe कैनवास, लक्ष्य खींचें, संकेतक ड्रॉप करें, आकार बदलें और एक घटक टूलबार - इंटरैक्शन परत जिसे सही होने में महीनों लगते हैं और जिसके लिए कोई भी आपके उत्पाद को नहीं खरीदता है।
अपने SaaS, CMS, मार्केटिंग प्लेटफ़ॉर्म या आंतरिक टूल के लिए एक विज़ुअल ईमेल संपादक बनाएं। उपयोगकर्ताओं को ड्रैग-एंड-ड्रॉप ब्लॉक के साथ उत्तरदायी ईमेल बनाने दें, जबकि आपकी टीम घटकों, टेम्प्लेट, भंडारण, आउटपुट और प्रकाशन को नियंत्रित करती है।
आपके उपयोगकर्ता नेत्रहीन रूप से ईमेल बनाते हैं। आपका एप्लिकेशन अनुभव को नियंत्रित करता है।
यह इस पृष्ठ पर चल रहा एक वास्तविक GrapesJS संपादक है - न कि वीडियो और न ही स्क्रीनशॉट। दाईं ओर से एक ब्लॉक को खींचें, इसे फिर से स्टाइल करने के लिए कुछ भी चुनें, फोन की चौड़ाई पर स्विच करें, फिर मार्कअप को वापस पढ़ें। हेडर और पाद लेख लॉक हैं, जो वही पैटर्न है जो अनुभाग आगे बताता है।
आप यहां क्या कर सकते हैं
ड्रैग-एंड-ड्रॉप ईमेल बिल्डर एक विज़ुअल एडिटर है जो उपयोगकर्ताओं को HTML टेबल और ईमेल-विशिष्ट CSS लिखने के बजाय पुनः प्रयोज्य घटकों से ईमेल लेआउट बनाने देता है।
अंतर यह है कि नियमों को किसे जानना है। एक बिल्डर के बिना, जो कोई भी ईमेल लिखता है उसे यह जानने की जरूरत है कि लेआउट नेस्टेड टेबल के साथ किया जाता है, कि अधिकांश स्टाइल इनलाइन होना चाहिए, और यह कि एक आवारा मार्जिन एक क्लाइंट में डिजाइन को ध्वस्त कर सकता है। एक बिल्डर के साथ, उन नियमों को एक बार एन्कोड किया जाता है - आपके द्वारा - ब्लॉक और घटकों में, और बाकी सभी बस उन्हें व्यवस्थित करते हैं।
एक दृश्य बिल्डर के बिना
कोई व्यक्ति टेबल मार्कअप को हाथ से लिखता है, फिर उसे हाथ से जांचता है। हर नया ईमेल पिछले ईमेल की एक प्रति से शुरू होता है।
<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">स्वागत है</h1>
<p style="margin:0;font-size:15px;line-height:1.6">आपकी सामग्री... </p>
</td>
</tr>
</table>ड्रैग-एंड-ड्रॉप बिल्डर के साथ
कोई ब्लॉक की व्यवस्था करता है. तालिका मार्कअप उन घटकों से उत्पन्न होता है जिन्हें आपने एक बार परिभाषित और समीक्षा की थी.
ईमेल को आसान बनाने के लिए बिल्डर नहीं है। यह कठिन भागों को किसी और के निर्णय को बनाने के लिए है - आपका, एक बार किया गया, घटक स्तर पर।
एक वेब पेज एक ब्राउज़र में चलता है जिसके बारे में आप मोटे तौर पर तर्क कर सकते हैं। एक ईमेल उस ग्राहक के अंदर चलता है जिसमें प्राप्तकर्ता ने इसे खोला है, और वह क्लाइंट आपके मार्कअप को फिर से लिख सकता है, आपकी शैलियों को हटा सकता है, या इसे पूरी तरह से एक अलग इंजन के साथ रख सकता है। इसलिए ईमेल के लिए एक बिल्डर को यह सीमित करना होगा कि उपयोगकर्ता क्या उत्पादन कर सकते हैं, न कि केवल उत्पादन को सुखद बना सकते हैं।
जहां आपके ईमेल को जीवित रहना है
Gmail
वेब, एंड्रॉइड और आईओएस ऐप एक दूसरे से अलग व्यवहार करते हैं, और वेब क्लाइंट रेंडरिंग से पहले आपकी शैलियों को संसाधित करता है।
Outlook
डेस्कटॉप, वेब और नए विंडोज क्लाइंट प्रभावी रूप से अलग-अलग रेंडरर हैं। विंडोज पर डेस्कटॉप बिल्ड ऐतिहासिक रूप से सबसे सख्त लक्ष्य रहा है।
Apple Mail
आम ग्राहकों में सबसे अनुमेय, जो इसे एक खराब प्रॉक्सी बनाता है: एक ईमेल जो यहां दिखता है वह अभी भी कहीं और टूट सकता है।
Yahoo Mail
शैलियों और मार्कअप के लिए अपने स्वयं के स्वच्छता नियमों के साथ एक और वेबमेल क्लाइंट।
मोबाइल क्लाइंट
संकीर्ण व्यूपोर्ट, आक्रामक टेक्स्ट स्केलिंग और डार्क-मोड हैंडलिंग जो ऐप और ओएस संस्करण के अनुसार भिन्न होती है।
बाकी सब कुछ
कॉर्पोरेट गेटवे, क्षेत्रीय प्रदाता और पुराने ग्राहक जो कभी भी एक विशिष्ट परीक्षण मैट्रिक्स में दिखाई नहीं देते हैं।
यह बिल्डर पर क्या मजबूर करता है
लेआउट टेबल है, फ्लेक्सबॉक्स या ग्रिड नहीं
आपके कॉलम, स्पेसर और डिवाइडर टेबल घटक होने चाहिए। उपयोगकर्ताओं को कभी भी कैनवास में नंगे div को गिराने में सक्षम नहीं होना चाहिए।
CSS समर्थन आंशिक और असमान है
ब्राउज़र के पूर्ण सेट को उजागर करने के बजाय, Style Manager को उन गुणों तक सीमित करें जिनका आपने वास्तव में परीक्षण किया है।
शैलियाँ सबसे सुरक्षित इनलाइन हैं
या तो एक प्रीसेट के साथ लेखक जो निर्यात पर इनलाइन करता है, या ईमेल आपके बैकएंड को छोड़ने से पहले अपनी पाइपलाइन में एक इनलाइनर चलाता है।
मीडिया के प्रश्नों का सार्वभौमिक रूप से सम्मान नहीं किया जाता है
डिज़ाइन करें ताकि एकल-स्तंभ फ़ॉलबैक पहले से ही स्वीकार्य हो, और उत्तरदायी नियमों को एक आवश्यकता के बजाय सुधार के रूप में मानें।
छवियां अक्सर डिफ़ॉल्ट रूप से अवरुद्ध होती हैं
प्रत्येक छवि घटक पर वैकल्पिक पाठ की आवश्यकता होती है, और कभी भी किसी ब्लॉक को पठनीय होने के लिए छवि पर निर्भर न होने दें।
डार्क मोड आपके ईमेल को फिर से रंग दे सकता है
कुछ ग्राहक स्वचालित रूप से रंग बदल देते हैं या बदल देते हैं। ऐसे डिज़ाइन से बचें जो किसी विशिष्ट पृष्ठभूमि पर निर्भर करते हैं, बिल्कुल उसी रंग के रहते हैं।
वेब फ़ॉन्ट अक्सर लोड नहीं होते हैं
प्रत्येक पाठ घटक पर एक वास्तविक फ़ॉलबैक स्टैक शिप करें, और इच्छित चेहरे के बजाय फ़ॉलबैक के साथ ईमेल की जाँच करें।
स्क्रिप्ट नहीं चलती हैं, और अन्तरक्रियाशीलता सीमित है
कुछ भी गतिशील एक लिंक के पीछे होता है। एक बिल्डर जो उपयोगकर्ताओं को इंटरैक्टिव ब्लॉक प्रदान करता है, उन्हें कुछ ऐसा पेश कर रहा है जो काम नहीं करेगा।
वाणिज्यिक मेल कानूनी आवश्यकताओं को पूरा करता है
प्रेषक की पहचान और सदस्यता समाप्त करने का तंत्र दायित्व हैं, डिज़ाइन विकल्प नहीं। चेकलिस्ट पर भरोसा करने के बजाय उन्हें टेम्पलेट में लॉक करें।
आप एक ऐसे संपादक का निर्माण नहीं कर रहे हैं जो सुंदर HTML का उत्पादन करता है। आप एक ऐसे संपादक का निर्माण कर रहे हैं जो खतरनाक HTML का उत्पादन नहीं कर सकता।
क्लाइंट व्यवहार रिलीज़ और रेंडरिंग मोड के साथ बदलता है, इसलिए यह पृष्ठ कोई प्रति-ग्राहक समर्थन मैट्रिक्स नहीं बताता है। ग्राहकों के खिलाफ मान्य करें और आपके अपने दर्शकों द्वारा वास्तव में उपयोग की जाने वाली सुविधाओं को मान्य करें। अंतिम समीक्षा 2026-09-03।
GrapesJS एक ओपन-सोर्स (BSD-3-Clause) वेब बिल्डर फ्रेमवर्क है, जो वर्तमान में 0.23.6 है, जिसमें GitHub पर लगभग 26k+ सितारे हैं। यह आपको एक संपादक के ऐसे हिस्से देता है जिन्हें बनाना महंगा होता है और उनमें अंतर करना उबाऊ होता है, और उन हिस्सों के लिए रास्ते से हट जाता है जो वास्तव में आपके उत्पाद हैं।
चयन के साथ एक iframe कैनवास, लक्ष्य खींचें, संकेतक ड्रॉप करें, आकार बदलें और एक घटक टूलबार - इंटरैक्शन परत जिसे सही होने में महीनों लगते हैं और जिसके लिए कोई भी आपके उत्पाद को नहीं खरीदता है।
एक बार ईमेल-सुरक्षित घटक को परिभाषित करें, फिर इसे एक ब्लॉक उपयोगकर्ता के रूप में उजागर करें। Components अपने स्वयं के नियम रखें: वे क्या स्वीकार करते हैं, क्या संपादित किया जा सकता है, क्या स्टाइल किया जा सकता है।
एक स्टाइलिंग पैनल जिसे आप उन गुणों तक सीमित कर सकते हैं जिन्हें ईमेल वास्तव में समर्थन करता है, और उन सेटिंग्स के लिए एक traits पैनल जो CSS नहीं हैं - एक लिंक लक्ष्य, एक वैकल्पिक पाठ, एक मर्ज फ़ील्ड।
नेस्टेड तालिकाओं के लिए एक संरचना वृक्ष जिसे क्लिक करके चुनना कठिन होता है, और एक परिसंपत्ति प्रबंधक जिसे आप अपनी स्वयं की मीडिया लाइब्रेरी में इंगित कर सकते हैं.
पूरा संपादक राज्य JSON को प्रोजेक्ट करने के लिए क्रमबद्ध करता है। Storage Manager को अपने API पर इंगित करें और संपादक यह परवाह करना बंद कर देता है कि डेटा कहाँ रहता है।
प्रत्येक संपादक कार्रवाई एक नामित कमांड है जिसे आप कॉल कर सकते हैं, ओवरराइड कर सकते हैं या जोड़ सकते हैं - जो कि 100+ प्लगइन्स पर GJS.Market इसे बिना कांटे के कैसे बढ़ाते हैं।
GrapesJS संपादन परत प्रदान करता है। आपका एप्लिकेशन ईमेल उत्पाद प्रदान करता है।
आपका उत्पाद: खाते, किरायेदार, बिलिंग, वह मार्ग जिस पर संपादक लगाया जाता है।
संपादक के चारों ओर आपका खोल: टेम्पलेट पिकर, राज्य सहेजें, बटन भेजें, अनुमोदन।
दृश्य संपादन इंजन। यह घटकों और कैनवस के बारे में जानता है, और आपके उपयोगकर्ताओं के बारे में कुछ भी नहीं जानता है।
आपके द्वारा कॉन्फ़िगर किए गए संपादक उप-सिस्टम: कौन से ब्लॉक मौजूद हैं, वे क्या स्वीकार करते हैं, क्या स्टाइल किया जा सकता है, क्या संपादित किया जा सकता है।
क्रमबद्ध संपादक की स्थिति। यह वही है जिसे आप संग्रहीत करते हैं ताकि बाद में एक ईमेल को फिर से खोला जा सके।
आपका API: अनुमतियाँ, संस्करण, मर्ज-टैग रिज़ॉल्यूशन, सत्यापन, अभियान रिकॉर्ड।
मार्कअप जो आप वास्तव में भेजते हैं। संग्रहीत परियोजना से मांग पर उत्पन्न।
प्रदाता जो मेल वितरित करता है और रिपोर्ट करता है कि उसके साथ क्या हुआ।
इनबॉक्स, और जो भी क्लाइंट इसे प्रस्तुत करने के लिए होता है।
GrapesJS कभी भी आपके डेटाबेस से बात नहीं करता है और कभी भी आपके ईमेल प्रदाता से बात नहीं करता है। यह आपको एक दस्तावेज़ सौंपता है; उसके बाद सब कुछ आपकी वास्तुकला है।
तीन मालिक, कोई ओवरलैप नहीं। इस पृष्ठ के विषय पर सबसे आम वास्तुशिल्प गलती संपादक से दाहिने हाथ के कॉलम में कुछ करने की उम्मीद कर रही है।
दाहिने हाथ के कॉलम में कुछ भी GrapesJS गैप नहीं है - वे पंक्तियाँ कभी भी संपादक का काम नहीं थीं। उन्हें पहले स्प्रिंट से एप्लिकेशन कार्य के रूप में मानना ही एकीकरण को सरल रखता है।
तीन कलाकृतियाँ एक ही कैनवास से निकलती हैं, और वे विनिमेय नहीं होती हैं। एक वह प्रोजेक्ट है जिसे आप रखते हैं, दो वे डिलीवरी प्रारूप हैं जो आप इससे उत्पन्न करते हैं।
ईमेल का संपादन योग्य प्रतिनिधित्व - घटक, शैलियाँ, संपत्तियाँ और पृष्ठ, ठीक उसी तरह जैसे संपादक उन्हें रखता है।
के लिए सबसे अच्छा
आप इसे कैसे प्राप्त करते हैं
editor.getProjectData()यह स्टोर करने के लिए है। केवल HTML को संग्रहीत करने का मतलब है कि अगला संपादन उपयोगकर्ता द्वारा बनाए गए दस्तावेज़ के बजाय पार्स किए गए मार्कअप से शुरू होता है।
टेबल-आधारित मार्कअप जो आप एक भेजने वाले प्रदाता को सौंपते हैं, जिसमें शैलियाँ शामिल होती हैं ताकि अधिक ग्राहक उन्हें बनाए रखें।
के लिए सबसे अच्छा
आप इसे कैसे प्राप्त करते हैं
editor.runCommand('gjs-get-inlined-html')इनलाइनिंग कमांड न्यूज़लेटर प्रीसेट से आता है, GrapesJS कोर से नहीं। इसके बिना आपको कैनवास मार्कअप और एक स्टाइलशीट मिलती है, जो वह नहीं है जिसे आप भेजना चाहते हैं।
ईमेल के लिए एक उच्च-स्तरीय मार्कअप भाषा जो उत्तरदायी तालिका HTML तक संकलित करती है।
के लिए सबसे अच्छा
आप इसे कैसे प्राप्त करते हैं
editor.runCommand('mjml-code')MJML एक अलग पारिस्थितिकी तंत्र है: संपादक प्लगइन MJML घटकों को प्रस्तुत करता है, और एक कंपाइलर उन्हें HTML में बदल देता है। दोनों आपके द्वारा जोड़े गए तृतीय-पक्ष पैकेज हैं।
JSON परियोजना है। HTML और MJML डिलीवरी हैं। पहले को स्टोर करें, दूसरों को जेनरेट करें।
कैनवास से इनबॉक्स तक
उपयोगकर्ताओं को एक खाली कैनवास और एक div न दें। घटकों का एक छोटा सा सेट शिप करें जो पहले से ही टेबल मार्कअप, इनलाइन शैलियों और फॉलबैक को एन्कोड करते हैं, फिर लोगों को उन्हें व्यवस्थित करने दें। ये दस मार्केटिंग और जीवनचक्र ईमेल को वास्तव में क्या चाहिए, उनमें से अधिकांश को कवर करते हैं।
लोगो, ब्रांड बार, प्रीहेडर टेक्स्ट। आमतौर पर लॉक किया जाता है ताकि हर ईमेल एक ही पहचान के साथ छोड़ दे।
शीर्षक, सहायक पंक्ति और एक कार्रवाई। आकार का ताकि संदेश छवि लोड किए बिना जीवित रहे।
एक वास्तविक फ़ॉन्ट फ़ॉलबैक स्टैक और लाइन ऊंचाई के साथ एक पैराग्राफ ब्लॉक जो फोन की चौड़ाई पर रहता है।
निश्चित चौड़ाई, स्पष्ट आयाम और आवश्यक वैकल्पिक पाठ, इसलिए एक अवरुद्ध छवि अभी भी एक पठनीय ईमेल छोड़ती है।
एक स्टाइल एंकर के बजाय एक टेबल-आधारित बटन - अंतर सख्त ग्राहकों में दिखाई देता है।
एक तालिका पंक्ति जो संकीर्ण व्यूपोर्ट पर ढेर होती है, स्टैक्ड ऑर्डर आपके द्वारा पहले से ही तय की जाती है।
छवि, नाम, मूल्य और लिंक, कॉपी-पेस्ट के बजाय आपके बैकएंड को भरने वाले फ़ील्ड द्वारा संचालित।
आइकन और URL की एक निश्चित पंक्ति, मार्कअप के बजाय सेटिंग्स के रूप में संपादन योग्य।
<hr> तत्व के बजाय टेबल बॉर्डर के साथ खींचा गया नियम, जिसे कई क्लाइंट रीस्टाइल करते हैं।
प्रेषक की पहचान, पता और सदस्यता समाप्त करें लिंक। आमतौर पर बंद कर दिया जाता है, क्योंकि ये दायित्व हैं।
उपयोगकर्ताओं को ईमेल HTML को समझने की आवश्यकता के बिना विज़ुअल डिज़ाइन करने दें।
एक घटक परिभाषा है; एक ब्लॉक वह है कि उपयोगकर्ता कैनवास पर एक कैसे प्राप्त करता है। ब्लॉक लाइब्रेरी आपके पास सबसे शक्तिशाली लीवर है जो लोग बना सकते हैं - और उदार होने से गलत होने के लिए सबसे आसान है।
वह लूप जिसे आपके उपयोगकर्ता दोहराते हैं
हर तत्व उपलब्ध है, हर शैली संपादन योग्य, संरचना के बारे में कोई राय नहीं।
आपके द्वारा डिज़ाइन किए गए ब्लॉकों की एक छोटी सूची, परीक्षण किया गया है और केंद्रीय रूप से बदल सकता है।
तीन स्तर, और उन्हें भ्रमित करना वह है जो ईमेल बिल्डरों को विकसित करना कठिन बनाता है। घटक वही हैं जो चीजें हैं, ब्लॉक वे हैं कि वे कैसे जोड़े जाते हैं, टेम्पलेट शुरुआती बिंदु समाप्त हो जाते हैं।
टेम्पलेट्स
एक संपूर्ण ईमेल जिसे उपयोगकर्ता शुरू कर सकता है - न्यूज़लेटर, रसीद, ऑनबोर्डिंग चरण। प्रोजेक्ट JSON के रूप में संग्रहीत, उपयोग पर क्लोन।
ब्लॉक
एक टेम्पलेट खींचने योग्य इकाइयों से इकट्ठा किया जाता है: एक hero, एक लेख पंक्ति, एक CTA बैंड, एक पाद लेख।
अवयव
एक ब्लॉक के अंदर संपादन योग्य आदिम, अपने स्वयं के traits और नियमों के साथ - एक उत्पाद कार्ड जो जानता है कि इसकी कीमत है।
पहले घटकों का निर्माण करें, फिर वे ब्लॉक बनाएं जो उन्हें उजागर करते हैं, फिर उन्हें व्यवस्थित करने वाले टेम्पलेट। टेम्पलेट स्तर पर शुरू होने वाली टीमें दर्जनों लगभग समान डिज़ाइन के साथ समाप्त होती हैं और उनमें से किसी को भी बदलने का कोई तरीका नहीं होता है।
एक न्यूज़लेटर टेम्पलेट, विस्तारित
न्यूज़लेटर टेम्पलेट
प्रत्येक बच्चा एक ब्लॉक है; प्रत्येक ब्लॉक घटकों से बना है। लेख ब्लॉक को एक बार बदलें और इस टेम्पलेट से बनाया गया प्रत्येक न्यूज़लेटर अगली बार खोलने पर इसे उठाता है।
GrapesJS में लॉक करना एक मोड या योजना स्तर नहीं है - यह एक घटक परिभाषा पर विकल्पों का एक सेट है। एक बंद क्षेत्र अभी भी प्रस्तुत करता है, अभी भी निर्यात करता है, और बस संपादक में खींचने, हटाने या फिर से स्टाइल करने से इनकार करता है।
कंपनी हेडर
बंदहर ईमेल में मौजूद, हर ईमेल में समान। किसी को भी इसे स्थानांतरित करने की आवश्यकता नहीं है।
संपादन योग्य सामग्री
संपादन योग्यपाठ और चित्र प्रेषक वास्तव में लिखने के लिए यहां है।
कार्यवाई के लिए बुलावा
संपादन योग्यसंपादन योग्य लेबल और लिंक, और रंगों की एक छोटी सूची - नीचे मार्कअप नहीं।
कानूनी पाद लेख
बंदप्रेषक की पहचान और सदस्यता समाप्त करें लिंक। एक दायित्व, डिजाइन निर्णय नहीं।
विकल्प जो इसे उत्पन्न करते हैं
removable: false, draggable: falseeditable: truestylable: ['background-color', 'color']removable: false, copyable: falseयह आपको क्या खरीदता है
ये विकल्प संपादक UI को नियंत्रित करते हैं। वे प्राधिकरण नहीं हैं। आपके सेव एंडपॉइंट पर सीधे पोस्ट किया गया एक संशोधित प्रोजेक्ट केवल वही है जो आपका सर्वर मान्य करता है - इसलिए हर बार बैकएंड पर संरचना, आवश्यक क्षेत्रों और अनुमत फ़ील्ड को मान्य करें।
वैयक्तिकृत ईमेल दो अलग-अलग समस्याएं हैं: उपयोगकर्ता को सिंटैक्स जाने बिना प्लेसहोल्डर रखने की अनुमति देना, और भेजने के समय वास्तविक डेटा के खिलाफ उस प्लेसहोल्डर को हल करना। संपादक पहले वाले को हल करता है। केवल आपका एप्लिकेशन ही दूसरे को हल कर सकता है।
टेम्पलेट में टैग मर्ज करें
{{first_name}}{{company_name}}{{order.total}}{{unsubscribe_url}}जहां तक संपादक का सवाल है, ये सामान्य पाठ हैं। वे बिल्कुल लिखित रूप में संग्रहीत होते हैं और जीवित रहते हैं, सहेजते हैं, फिर से खोलते हैं और अछूते निर्यात करते हैं।
उपयोगकर्ता उन्हें कैसे सम्मिलित करते हैं
उपलब्ध फ़ील्ड को अपने टेक्स्ट घटक पर एक विशेषता के रूप में प्रदर्शित करें — "पहला नाम", "कंपनी", "ऑर्डर टोटल" का ड्रॉपडाउन — और टोकन को स्वयं सामग्री में लिखें. उपयोगकर्ता एक फ़ील्ड चुनते हैं; वे कभी भी सिंटैक्स नहीं सीखते हैं, और वे एक ऐसे टैग का आविष्कार नहीं कर सकते हैं जिसे आपका रेंडरर नहीं जानता है.
गतिशील ब्लॉक
एक ब्लॉक उस सामग्री के लिए एक प्लेसहोल्डर हो सकता है जो अभी तक मौजूद नहीं है। उपयोगकर्ता एक उत्पाद कार्ड में ड्रॉप करता है और कॉन्फ़िगर करता है कि उसे कौन से उत्पाद दिखाने चाहिए; ईमेल रेंडर होने पर मान आते हैं।
GrapesJS संपादन अनुभव प्रदान करता है। आपका बैकएंड गतिशील डेटा को हल करता है और ईमेल रेंडर या भेजे जाने पर टैग मर्ज करता है।
दो चौड़ाई लगभग सभी डिज़ाइन समीक्षा को कवर करती हैं: ईमेल जिस चौड़ाई पर लिखा गया है, और एक फोन। दोनों संपादक में एक डिवाइस स्विच दूर हैं, और न ही परीक्षण के रूप में एक ही बात है।
वर्कफ़्लो जो वास्तव में समस्याओं को पकड़ता है
एक इन-एडिटर पूर्वावलोकन आपका ब्राउज़र है जो कैनवास मार्कअप को प्रस्तुत करता है। एक मेल क्लाइंट अपने स्वयं के इंजन के माध्यम से उस मार्कअप के एक रूपांतरित संस्करण को प्रस्तुत करता है, और दोनों भिन्न हो सकते हैं। पूर्वावलोकन डिजाइन समीक्षा के लिए है; एक बीज सूची या एक प्रतिपादन सेवा संगतता के लिए है।
अधिकांश ईमेल आपदाएँ बग प्रस्तुत नहीं कर रही हैं। वे एक टूटी हुई कड़ी, एक अधूरा मर्ज टैग या एक लापता सदस्यता समाप्त कर रहे हैं। तीनों सर्वर पर पकड़ने के लिए सस्ते हैं, और इनबॉक्स में पकड़ने के लिए महंगे हैं।
इससे पहले कि कोई टेम्पलेट ड्राफ़्ट से बाहर निकल सके, चलाएँ.
स्वचालित करने के लिए सस्ता, और सबसे आम एकल विफलता।
गैर-परक्राम्य, इसलिए इसे चेकलिस्ट के बजाय कोड में लागू करें।
Storage Manager एक इंटरफ़ेस है, डेटाबेस नहीं। इसे अपने स्वयं के API के खिलाफ लागू करें और संपादक आपके द्वारा नियंत्रित समापन बिंदुओं के माध्यम से लोड, ऑटोसेव और पुनर्स्थापित करता है - जो वह बिंदु है जिस पर ड्राफ्ट, संस्करण और अनुमोदन बिल्कुल संभव हो जाते हैं।
आपका बैकएंड जिस जीवनचक्र को परिभाषित करता है
// 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 }),
});
},
});ऑटोसेव को टाइमर के बजाय परिवर्तनों की संख्या से थ्रॉटल किया जाता है, इसलिए संपादनों के एक विस्फोट के लिए अभी भी एक अनुरोध की लागत होती है। संस्करणों को परियोजना की अपरिवर्तनीय प्रतियों के रूप में रखें JSON - एक संशोधन को पुनर्स्थापित करने में एक भार के अलावा कुछ भी खर्च नहीं होता है, और एक खराब संपादन एक घटना बनना बंद हो जाता है।
इस आर्किटेक्चर के बारे में कुछ भी आपको मेल भेजने के तरीके को बदलने के लिए नहीं कहता है। संपादक एक दस्तावेज़ तैयार करता है; आपका बैकएंड इसे प्रस्तुत करता है और इसे उस प्रदाता को सौंप देता है जिसके लिए आप पहले से ही भुगतान करते हैं।
GrapesJS
परियोजना का उत्पादन करता है और, अनुरोध पर, मार्कअप। प्राप्तकर्ताओं के बारे में कुछ नहीं जानता।
HTML / MJML
संग्रहीत परियोजना से मांग पर उत्पन्न, शैलियों के साथ इनलाइन या MJML संकलित।
आपका बैकएंड
मर्ज टैग का समाधान करता है, आउटपुट को मान्य करता है, अभियान रिकॉर्ड करता है, प्रदाता को कॉल करता है।
आपका प्रदाता
मेल वितरित करता है और बाउंस, शिकायतों, खुलता है और आपको वापस क्लिक करता है।
आपके बैकएंड पोस्ट के उदाहरण
अंतिम हॉप के चित्रण के रूप में वर्णानुक्रम में सूचीबद्ध। HTTP API या SMTP समापन बिंदु वाला कोई भी प्रदाता एक ही आकार में फिट बैठता है, और एक को दूसरे के लिए स्वैप करना संपादक को नहीं छूता है।
GrapesJS संपादक है, आपकी ईमेल डिलीवरी सेवा नहीं।
न तो GrapesJS और न ही GJS.Market ऊपर नामित किसी भी प्रदाता के साथ एकीकरण भेजता है, और कोई साझेदारी निहित नहीं है। सुपुर्दगी, प्रमाणीकरण और दमन प्रबंधन आपके प्रदाता और आपके एप्लिकेशन की जिम्मेदारी बनी हुई है।
// 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 });एक ही संपादन परत, आठ अलग-अलग तरीकों से पैक की गई। उनके बीच क्या परिवर्तन होता है कि कौन संपादन करता है, उन्हें क्या बदलने की अनुमति है, और आउटपुट कहां जाता है।
ग्राहकों को आपके उत्पाद के अंदर उन टेम्पलेट्स और ब्लॉकों के विरुद्ध जीवनचक्र और अभियान ईमेल डिज़ाइन करने दें, जिन्हें आप प्रति योजना नियंत्रित करते हैं.
SaaS बिल्डर आर्किटेक्चरएक मार्केटिंग टीम को एक आवर्ती प्रारूप के लिए एक दृश्य संपादक दें, जिसमें एक लेख ब्लॉक होता है जो हर मुद्दे को सुसंगत रखता है।
न्यूज़लेटर प्लगइन्सउन ईमेल को लिखें जो अभियानों और वर्कफ़्लो के अंदर बैठते हैं, उन लैंडिंग पृष्ठों के साथ ब्लॉक साझा करते हैं जिन्हें वे इंगित करते हैं।
लैंडिंग पेज बिल्डररसीदों और सूचनाओं के लिए कसकर नियंत्रित टेम्पलेट - ज्यादातर लॉक, एक छोटे संपादन योग्य मध्य के साथ।
टेम्पलेट सिस्टमसामग्री टीमों को उन ब्लॉकों का पुनः उपयोग करने दें जिनके साथ वे पहले से ही वेब सामग्री लिखते हैं, बाकी सामग्री मॉडल के बगल में संग्रहीत हैं।
हेडलेस CMS संपादनएक संपादक, प्रति ग्राहक एक ब्रांडेड ब्लॉक सेट, और टेम्पलेट जिन्हें समीक्षाओं के बीच आकार से बाहर नहीं निकाला जा सकता है।
व्हाइट-लेबल बिल्डर्सआंतरिक टीमों को एक साझा HTML फ़ाइल और एक अनुरोध कतार के बजाय एक नियंत्रित संपादक दें।
डेवलपर्स के लिए नो-कोडसंपादक को अपने उत्पाद के हिस्से की तरह दिखें और व्यवहार करें, पैनल, आइकन और भाषा तक।
संपादक को व्हाइट-लेबल करेंनिर्णय नहीं, दायरा जांच। प्रत्येक पंक्ति एक ईमेल बिल्डर की आवश्यकता है। बायां कॉलम वह काम है जो आपके पास होगा; दाईं ओर वह है जो GrapesJS आपको एक घटक लिखने से पहले देता है।
| योग्यता | खरोंच से | GrapesJS के साथ |
|---|---|---|
| दृश्य कैनवास | इसे बनाओ | सुलभ |
| खींचें और छोड़ें | इसे बनाओ | सुलभ |
| घटक मॉडल | इसे बनाओ | सुलभ |
| ब्लॉक लाइब्रेरी | इसे बनाओ | एक्स्टेंसिबल |
| शैली संपादन | इसे बनाओ | सुलभ |
| परत का पेड़ | इसे बनाओ | सुलभ |
| पूर्ववत करें / फिर से करें | इसे बनाओ | सुलभ |
| संपत्ति प्रबंधन | इसे बनाओ | सुलभ |
| भंडारण एकीकरण | इसे बनाओ | कॉन्फ़िगर करने योग्य |
| कस्टम घटक | इसे बनाओ | समर्थित |
| प्लगइन आर्किटेक्चर | इसे बनाओ | समर्थित |
"उपलब्ध" का अर्थ है क्षमता कोर के साथ जहाज और कॉन्फ़िगरेशन की आवश्यकता है, निर्माण की नहीं। इसका मतलब यह नहीं है कि इसे किसी काम की आवश्यकता नहीं है: प्रत्येक गंभीर ईमेल बिल्डर अपने स्वयं के घटकों को परिभाषित करता है, अपनी शैलियों को प्रतिबंधित करता है और अपना स्वयं का स्टोरेज एडाप्टर लिखता है। grapesjs 0.23.6 के विरुद्ध 2026-09-03 पर सत्यापित किया गया।
अपना ईमेल उत्पाद बनाएं, न कि किसी अन्य संपादक इंजन का।
GJS.Market कैटलॉग से वास्तविक लिस्टिंग, जिस निर्माण से संबंधित हैं, उसके चरण के आधार पर समूहीकृत की जाती है। नाम, कीमतें और छवियां सीधे बाज़ार से आती हैं, इसलिए आप यहां जो देख रहे हैं वह वास्तव में आज बिक्री के लिए है।
एक पेज एडिटर को ईमेल एडिटर में क्या बदल देता है: टेबल-आधारित ब्लॉक, एक ईमेल-आकार का Style Manager, आयात और निर्यात।
श्रेणी ब्राउज़ करेंतैयार ईमेल अनुभाग, और उपयोगकर्ताओं को अपना स्वयं का सहेजने देने का एक तरीका।
श्रेणी ब्राउज़ करेंउत्तरदायी ईमेल ब्लॉक का एक डिज़ाइन किया गया सेट, इसलिए आपकी पहली ब्लॉक लाइब्रेरी एक रिक्त सूची नहीं है।
उपयोगकर्ताओं को घटक कोड को छूने के बिना अपनी व्यवस्था को पुनः प्रयोज्य ब्लॉक के रूप में सहेजने दें।
शुरुआती बिंदुओं की एक लाइब्रेरी, इसलिए कोई भी खाली कैनवास से ईमेल शुरू नहीं करता है।
श्रेणी ब्राउज़ करेंएक ईमेल के एक भाग के लिए जिसे हाथ से लिखा जाना है - एक ट्रैकिंग पिक्सेल, एक प्रदाता-विशिष्ट ब्लॉक, एक स्निपेट कानूनी आपूर्ति।
श्रेणी ब्राउज़ करेंस्टोरेज द्वारा समर्थित एक एसेट मैनेजर जो ड्राफ़्ट को समाप्त कर देता है, क्योंकि एक टूटी हुई छवि URL एक टूटा हुआ ईमेल होता है।
श्रेणी ब्राउज़ करेंCloudinary के साथ परिसंपत्ति प्रबंधक का समर्थन करें, इसलिए ईमेल छवियों में एक स्थायी, परिवर्तनीय URL होता है।
परिसंपत्ति प्रबंधक के सामने एक अपलोड UI, प्रगति, पुनः प्रयास और कई स्रोतों के साथ।
डिफ़ॉल्ट अपलोडर को Filestack के लिए स्वैप करें, जिसमें उसका अपना पिकर और परिवर्तन शामिल हैं।
प्रोजेक्ट JSON कहाँ रहता है, और संपादक को इसे कितनी बार लिखने की अनुमति है।
श्रेणी ब्राउज़ करेंपहले स्टोरेज एडाप्टर लिखे बिना प्रोजेक्ट JSON से Firebase तक जारी रखें।
ईमेल प्रोजेक्ट को अपने बाकी सामग्री मॉडल के साथ Directus में रखें।
दर-सीमा बचाती है इसलिए संपादनों के एक विस्फोट में दर्जनों के बजाय एक अनुरोध का खर्च आता है।
तैयार दस्तावेज़ को हैंडऑफ़, समीक्षा या किसी मौजूदा बिल्ड पाइपलाइन के लिए निर्यात करें.
श्रेणी ब्राउज़ करेंइस पृष्ठ पर कुछ क्षमताओं के पीछे कोई प्लगइन नहीं है, और यह खंड एक का आविष्कार नहीं करेगा: कोई पूर्वावलोकन या स्पैम-चेक उत्पाद नहीं है, कोई CSS-इनलाइनर उत्पाद नहीं है, कोई मर्ज-टैग उत्पाद नहीं है और कैटलॉग में कोई तैयार ईमेल-टेम्पलेट उत्पाद नहीं है। उन्हें यहां लागू करने के लिए पैटर्न के रूप में वर्णित किया गया है, या हमारी टीम आपके साथ काम कर सकती है।
चार बिल्ड, केवल उन लिस्टिंग से इकट्ठे होते हैं जो आज मौजूद हैं। उस पंक्ति से शुरू करें जो आप जो शिपिंग कर रहे हैं उससे मेल खाती है और जब वह अपना स्थान अर्जित कर ले तो अगली परत जोड़ें।
पहला आंतरिक संपादक: ब्लॉक खींचें, एक टेम्पलेट सहेजें, HTML निर्यात करें।
MJML संलेखन, एक डिज़ाइन किया गया ब्लॉक सेट, टेम्पलेट और एक प्रति-घटक कोड एस्केप हैच।
ग्राहक का सामना करना पड़ रहा है: MJML आउटपुट, टेम्पलेट रिकॉर्ड, रिमोट स्टोरेज और थ्रॉटल autosave।
एक मार्केटिंग टीम का संपादक: ब्लॉक, टेम्पलेट और होस्ट की गई संपत्तियां जो मसौदे से आगे निकल जाती हैं।
कीमतें निर्माण समय पर लाइव कैटलॉग से आती हैं। निःशुल्क लिस्टिंग चिह्नित हैं; भुगतान किए गए सीधे उनके उत्पाद पृष्ठ पर लिंक करते हैं।
काम का आकार, क्रम में यह करने के लिए समझ में आता है। प्रत्येक चरण उस गाइड से जुड़ता है जो इसे ठीक से कवर करता है - यह पृष्ठ एक नक्शा है, ट्यूटोरियल नहीं।
एक कंटेनर पर GrapesJS माउंट करें, दो डिवाइस ईमेल की जरूरतों को सेट करें, और किसी भी अन्य चीज़ से पहले डिफ़ॉल्ट स्थानीय संग्रहण को बंद करें।
GrapesJS सेटअप गाइड →उन तालिका-आधारित घटकों को लिखें जिनसे आपके ईमेल बने हैं, जो स्टाइल किया जा सकता है उसे प्रतिबंधित करें, और प्रत्येक को एक ब्लॉक के रूप में उजागर करें।
घटकों को गहराई से ईमेल करें →उपयोगकर्ताओं को शुरू करने के लिए कहीं दें। टेम्प्लेट को प्रोजेक्ट JSON के रूप में स्टोर करें और मूल को संपादित करने के बजाय उपयोग पर क्लोन करें।
टेम्पलेट सिस्टम →अपने API के खिलाफ एक स्टोरेज एडाप्टर लागू करें ताकि ड्राफ्ट, autosave और संस्करण परिभाषित करने के लिए आपके हों।
भंडारण प्लगइन्स →भेजें पर मार्कअप जनरेट करें, मर्ज टैग सर्वर-साइड को हल करें, और परिणाम अपने प्रदाता को सौंपें।
निर्माण के साथ सहायता प्राप्त करें →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>`,
},
},
});दोनों नमूने grapesjs 0.23.6 के खिलाफ चलते हैं। 'अंगूरजेएस-प्रीसेट-न्यूज़लेटर' और 'अंगूरजेएस-एमजेएमएल' अलग-अलग BSD-3-Clause पैकेज हैं - कोर शिप कोई ईमेल प्रीसेट नहीं है - इसलिए जो भी आपके द्वारा ऊपर चुने गए आउटपुट स्वरूप से मेल खाता है उसे स्थापित करें।
एक कार्यशील डेमो को एक ईमेल बिल्डर से क्या अलग करता है जिसे आप ग्राहकों को सौंप सकते हैं। यहां सब कुछ आपका काम है, संपादक का नहीं।
उपयोगकर्ता क्या कर सकते हैं और क्या नहीं।
उपयोगकर्ता द्वारा बनाई गई कुछ भी खोने योग्य नहीं होनी चाहिए।
सर्वर पर हर बार मान्य किया जाता है।
वे हिस्से जो डिजाइन के बारे में नहीं हैं।
एक ईमेल बिल्डर उपयोगकर्ता-लिखित मार्कअप स्वीकार करता है और इसे तीसरे पक्ष को भेजता है। वह संयोजन एक विशिष्ट CRUD सुविधा की तुलना में अधिक देखभाल का हकदार है।
जोखिम
लॉक किए गए क्षेत्र, प्रतिबंधित शैलियाँ और छिपे हुए ब्लॉक ब्राउज़र में रहते हैं। एक तैयार किया गया अनुरोध अपनी पसंद का कोई भी प्रोजेक्ट पोस्ट कर सकता है।
क्या करना है
सर्वर पर सहेजे गए प्रोजेक्ट को मान्य करें: आवश्यक क्षेत्र मौजूद, एक अनुमति सूची पर घटक प्रकार, सीमा के भीतर फ़ील्ड।
जोखिम
कोड-एम्बेड घटक एक सुविधा अनुरोध है जो प्रत्येक ईमेल बिल्डर पर आता है, और यह आपके ग्राहकों के इनबॉक्स पर इंगित एक इंजेक्शन सतह है।
क्या करना है
संग्रहीत मार्कअप को सैनिटाइज़ करें और रेंडर पर फिर से सैनिटाइज़ करें। प्रतिबंधित करें कि कोड घटक का उपयोग कौन कर सकता है, और इसके प्रत्येक उपयोग को लॉग करें।
जोखिम
किसी संपादक से किए गए अपलोड सार्वजनिक URL पर समाप्त होते हैं जो ईमेल के रूप में लंबे समय तक जीवित रहते हैं।
क्या करना है
सर्वर पर प्रकार और आकार को मान्य करें, छवियों को फिर से एन्कोड करें, और एक ऐसे डोमेन से संपत्ति परोसें जिसमें कोई सत्र कुकीज़ नहीं है।
जोखिम
प्रतिपादन और भेजना महंगे, अपरिवर्तनीय संचालन हैं। वे आमतौर पर संपादक मार्ग की तुलना में कम सावधानी से संरक्षित होते हैं।
क्या करना है
प्रति टेम्पलेट और प्रति प्राप्तकर्ता सूची को अधिकृत करें, दर-सीमा भेजती है, और कुछ भी पूर्ण दर्शकों के पास जाने से पहले दूसरी जांच की आवश्यकता होती है।
जोखिम
एक अनुमेय टेम्पलेट रेंडरर खुशी-खुशी एक ऐसे क्षेत्र को प्रक्षेपित करेगा जिसे प्रेषक को कभी नहीं देखना चाहिए था।
क्या करना है
उस टेम्पलेट के लिए फ़ील्ड्स की एक स्पष्ट अनुमति सूची के विरुद्ध हल करें, और किसी अज्ञात टैग पर रेंडर को उत्सर्जित करने के बजाय विफल करें।
संपादक आपके एप्लिकेशन के अंदर रहने वाली एक बड़ी निर्भरता है। ये ऐसे लीवर हैं जो मायने रखते हैं, जिस क्रम में वे आमतौर पर भुगतान करते हैं।
संपादक को आलस्य से लोड करें
इसे केवल उस मार्ग पर आयात करें जो ईमेल को संपादित करता है, और केवल ब्राउज़र में। संपादक के बारे में कुछ भी सर्वर रेंडर या आपके मुख्य बंडल में नहीं है।
आलसी-लोड वैकल्पिक प्लगइन्स
एक कोड व्यूअर, एक छवि संपादक या एक MJML कंपाइलर तब आ सकता है जब उपयोगकर्ता उस पैनल को खोलता है।
ब्लॉक लाइब्रेरी को छोटा रखें
प्रत्येक ब्लॉक को स्टार्टअप पर पार्स किया जाता है और पैलेट में प्रदान किया गया एक कार्ड होता है। एक क्यूरेटेड सेट तेज होने के साथ-साथ सुरक्षित भी होता है।
डिबाउंस autosave
कीस्ट्रोक के बजाय परिवर्तन गणना द्वारा थ्रॉटल करें, इसलिए टाइपिंग का एक विस्फोट तीस के बजाय एक अनुरोध उत्पन्न करता है।
प्रोजेक्ट डेटा को कम रखें
URL द्वारा संदर्भ संपत्तियां। प्रोजेक्ट JSON के अंदर बेस 64 छवियां हर लोड, सेव और वर्जन कॉपी को भारी बनाती हैं।
कस्टम घटक देखें
Component तर्क जो हर परिवर्तन पर चलता है, एक कैनवास का सामान्य कारण है जो लंबे ईमेल पर सुस्त महसूस करता है।
जानबूझकर यहां कोई आंकड़ा उद्धृत नहीं किया गया है: संख्याएं आपकी ब्लॉक गणना, आपके घटक तर्क और आपके उपयोगकर्ताओं के हार्डवेयर पर निर्भर करती हैं। प्रत्येक परिवर्तन से पहले और बाद में अपने स्वयं के एप्लिकेशन में संपादक मार्ग को मापें।
अब जब वास्तुकला स्पष्ट हो गई है, तो व्यापार-बंद को बताना आसान है। एक होस्टेड बिल्डर को ग्राहक के सामने रखना तेज़ होता है; आपके पास एक बिल्डर आपके उत्पाद की निर्भरता के बजाय उसकी एक विशेषता है।
एक विक्रेता द्वारा संचालित एक एम्बेड करने योग्य संपादक, उनके API और उनके UI के माध्यम से एकीकृत।
आपको क्या मिलता है
एक कार्यशील संपादक के लिए सबसे तेज़ मार्ग, रोडमैप और किसी और के स्वामित्व वाले मूल्य निर्धारण के साथ।
होस्ट किए गए विक्रेता के साथ तुलना करेंएक ओपन-सोर्स संपादन परत जिसे आप अपने स्वयं के एप्लिकेशन के हिस्से के रूप में कॉन्फ़िगर, विस्तारित और परिनियोजित करते हैं।
आपको क्या मिलता है
अधिक काम सामने है, और एक संपादक जो आपके उत्पाद के आसपास के बजाय बढ़ता है।
निर्माण शुरू करेंहोस्ट किए गए प्लेटफ़ॉर्म एक-दूसरे से काफी भिन्न होते हैं, यही कारण है कि बायां कॉलम कहता है कि "प्रदाता पर निर्भर करता है" एक व्यापक दावा करने के बजाय। डेटा स्थान, प्रतिधारण, अनुकूलन सीमाओं पर विशिष्ट विक्रेता की शर्तों की जाँच करें और यदि आप छोड़ देते हैं तो आपके टेम्पलेट का क्या होता है।
GrapesJS एक सादे DOM तत्व में बदल जाता है, इसलिए इसे एकीकृत करना यह सवाल है कि कौन सा जीवनचक्र हुक init को कॉल करता है और किसे नष्ट करता है। आपका ढांचा आपके एप्लिकेशन को शक्ति प्रदान करता है; GrapesJS विज़ुअल ईमेल संपादन परत को शक्ति प्रदान करता है।
यदि आप इस पर शोध करने के बजाय इसे काम करना चाहते हैं, तो हमारी टीम एक सेवा के रूप में GrapesJS-आधारित ईमेल संपादकों का निर्माण करती है - जिसमें इस पृष्ठ के वे हिस्से शामिल हैं जिनके पीछे कोई प्लगइन नहीं है।
अपने उपयोगकर्ताओं को अपनी विकास टीम को स्क्रैच से ईमेल संपादक बनाने के लिए मजबूर किए बिना ईमेल बनाने का एक दृश्य तरीका दें।
हमें बताएं कि संपादक को क्या करना है और एकीकरण के लिए एक स्कोप योजना प्राप्त करें।
निर्माण शुरू करेंबाज़ार से प्रीसेट, ब्लॉक, टेम्प्लेट, स्टोरेज और एसेट प्लगइन्स।
ईमेल प्लगइन्स का अन्वेषण करेंघटक, टेम्पलेट, भंडारण और प्रकाशन, आपके स्टैक के खिलाफ वितरित किया गया।
GrapesJS विशेषज्ञ से बात करेंआपके उपयोगकर्ता ईमेल बनाते हैं। आपका उत्पाद अनुभव का मालिक है।