All Projects → arco-design → easy-email

arco-design / easy-email

Licence: MIT license
React.js Drag-and-Drop Email Editor based on MJML. Transform structured JSON data into major email clients compatible HTML. Written in Typescript and supported both in browser and Node.js.

Programming Languages

typescript
32286 projects
HTML
75241 projects
SCSS
7915 projects
CSS
56736 projects
javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to easy-email

dnde
Drag and drop react email editor
Stars: ✭ 31 (-93.1%)
Mutual labels:  drag-and-drop, email-template, email-editor, react-email-component, react-email
email-editor
Email Editor to embed in your SaaS application. Fully customizable and lightweight.
Stars: ✭ 28 (-93.76%)
Mutual labels:  drag-and-drop, email-marketing, email-builder, email-editor, react-email-component
React Email Editor
Drag-n-Drop Email Editor Component for React.js
Stars: ✭ 3,131 (+597.33%)
Mutual labels:  drag-and-drop, email-marketing, email-template, email-builder, email-editor
mjml-server
MJML wrapped in Express for use over HTTP
Stars: ✭ 31 (-93.1%)
Mutual labels:  email-marketing, email-template, mjml
Vue Email Editor
Drag-n-Drop Email Editor Component for Vue.js
Stars: ✭ 166 (-63.03%)
Mutual labels:  drag-and-drop, email-marketing, email-template
bulk-email-sender
Send Templatized Dynamic Emails Automatically
Stars: ✭ 30 (-93.32%)
Mutual labels:  email-marketing, email-template
Email Templates
Free HTML email templates for Mailchimp and other emails services
Stars: ✭ 457 (+1.78%)
Mutual labels:  email-marketing, email-template
Emailimo
Small project that simplifies (according to me) sending colorful emails in PowerShell
Stars: ✭ 55 (-87.75%)
Mutual labels:  email-marketing, email-template
Mosaico
Mosaico - Responsive Email Template Editor
Stars: ✭ 1,392 (+210.02%)
Mutual labels:  email-marketing, email-template
rss-to-email
Generate HTML emails from your RSS feeds.
Stars: ✭ 92 (-79.51%)
Mutual labels:  email-template, mjml
Pine
A modular and lightweight, responsive email framework.
Stars: ✭ 98 (-78.17%)
Mutual labels:  email-marketing, email-template
Responsive Html Email Template
A free simple responsive HTML email template
Stars: ✭ 10,831 (+2312.25%)
Mutual labels:  email-marketing, email-template
email-template-generator
Simple and useful web app to generate e-mails for any reason you want!
Stars: ✭ 51 (-88.64%)
Mutual labels:  email-marketing, email-template
acorn
A responsive email framework based on a golden ratio typography grid.
Stars: ✭ 90 (-79.96%)
Mutual labels:  email-marketing, email-template
Maizzle
Official Maizzle starter project.
Stars: ✭ 921 (+105.12%)
Mutual labels:  email-marketing, email-template
vite-vue3-lowcode
vue3.x + vite2.x + vant + element-plus H5移动端低代码平台 lowcode 可视化拖拽 可视化编辑器 visual editor 类似易企秀的H5制作、建站工具、可视化搭建工具
Stars: ✭ 1,309 (+191.54%)
Mutual labels:  drag-and-drop, nocode
Blocks
A JSX-based page builder for creating beautiful websites without writing code
Stars: ✭ 4,300 (+857.68%)
Mutual labels:  visual-editor, nocode
mjml-rest-client
Java library to convert MJML templates to HTML
Stars: ✭ 16 (-96.44%)
Mutual labels:  mjml, mjml-template
Html Email Templates
Free HTML Email Templates created using the Postcards - https://designmodo.com/postcards/
Stars: ✭ 178 (-60.36%)
Mutual labels:  email-marketing, email-template
Grapesjs
Free and Open source Web Builder Framework. Next generation tool for building templates without coding
Stars: ✭ 14,892 (+3216.7%)
Mutual labels:  drag-and-drop, nocode

Easy email



Using TypeScript

Join Our Community

Introduction

Easy email is developed based on the MJML and has very good compatibility. At the same time, it can generate code through drag-and-drop editing.

Features:

  • Drag and drop editor
  • Can be converted into MJML, or generated through MJML
  • Defined custom block
  • Dynamic rendering
  • Easily customize UI when you need
  • Theme configuration
Video Overview
Overview

Live Demo

Check out the live demo here: https://email.maocanhua.cn

How does it work?


Roadmap

  • Localization in progress.
  • Awesome responsive, support mobile and desktop display different styles (without any compatibility issues)
  • Replace shadow dom with iframe, support firefox/safari browsers.
  • Improve documentation and add more usage examples

Donation

If you like this project, please consider donating.

Buy Me A Coffee

Getting started

$ npm install --save easy-email-core easy-email-editor easy-email-extensions react-final-form

or

$ yarn add easy-email-core easy-email-editor easy-email-extensions react-final-form
import React from 'react';
import { BlockManager, BasicType, AdvancedType } from 'easy-email-core';
import { EmailEditor, EmailEditorProvider } from 'easy-email-editor';
import { ExtensionProps, StandardLayout } from 'easy-email-extensions';
import { useWindowSize } from 'react-use';

import 'easy-email-editor/lib/style.css';
import 'easy-email-extensions/lib/style.css';

// theme, If you need to change the theme, you can make a duplicate in https://arco.design/themes/design/1799/setting/base/Color
import '@arco-themes/react-easy-email-theme/css/arco.css';

const initialValues = {
  subject: 'Welcome to Easy-email',
  subTitle: 'Nice to meet you!',
  content: BlockManager.getBlockByType(BasicType.PAGE)!.create({}),
};

export default function App() {
  const { width } = useWindowSize();

  const smallScene = width < 1400;

  return (
    <EmailEditorProvider
      data={initialValues}
      height={'calc(100vh - 72px)'}
      autoComplete
      dashed={false}
    >
      {({ values }) => {
        return (
          <StandardLayout
            compact={!smallScene}
            showSourceCode={true}
          >
            <EmailEditor />
          </StandardLayout>
        );
      }}
    </EmailEditorProvider>
  );
}

Examples

Please see https://github.com/m-Ryan/easy-email-demo


Configuration

property Type Description
height string / number Set the height of the container
data interface IEmailTemplate { content: IPage; subject: string; subTitle: string; } Source data
children ( props: FormState,helper: FormApi<IEmailTemplate, Partial>) => React.ReactNode ReactNode
onSubmit Config<IEmailTemplate, Partial>['onSubmit']; Called when the commit is triggered manually
fontList { value: string; label: string; }[]; Default font list.
interactiveStyle { hoverColor?: string; selectedColor?: string;} Interactive prompt color
onUploadImage (data: Blob) => Promise; Triggered when an image is pasted or uploaded
onAddCollection (payload: CollectedBlock) => void; Add to collection list
onRemoveCollection (payload: { id: string; }) => void; Remove from collection list
dashed boolean Show dashed
autoComplete boolean Automatically complete missing blocks. For example, Text => Section, will generate Text=>Column=>Section
mergeTags Object A merge tag is a bit of specific code that allows you to insert dynamic data into emails. Like {{user.name}}, and used for preview
previewInjectData Object Dynamic data for preview, it will overwrite mergeTags.
onBeforePreview (html: string, mergeTags: PropsProviderProps['mergeTags']) => string Promise You can replace mergeTags when previewing.

Hotkeys

hotkey Description
mod+z undo
mod+y redo
delete/backspace delete block
tab / shift + tab fast select block, if block is focusing,tab select next block & shift + tab select prev block

Packages


Development

$ git clone [email protected]:arco-design/easy-email.git
$ cd easy-email
$ yarn  
$ yarn install-all
$ yarn dev

License

The MIT License

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].