Skip to content

zalify/easy-email-editor

Repository files navigation

Easy email


The most developer-friendly email editor based on MJML


Using TypeScript


๐Ÿ’ผ Looking for more features? Check out Easy Email Pro with cross-browser support, responsive design, and premium components.


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.

Video Overview
Overview

๐ŸŽฎ Live Demo

๐Ÿ“ง Free Email Templates

Looking for ready-to-use templates? Check out our free collection of MJML and HTML email templates.

๐Ÿš€ Getting Started

$ npm install --save 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 'easy-email-editor/lib/style.css';
import 'easy-email-extensions/lib/style.css';
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() {

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

โš™๏ธ 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.
onUploadImage (data: Blob) => Promise; Triggered when an image is pasted or uploaded

๐Ÿ“Š Open Source vs Pro Version

Feature Open Source Version Pro Version
Browser Compatibility Only supports Chrome Compatible with various browsers (uses iframe)
React 19 Support โŒ Not supported โœ… Supported
Responsive Design โŒ Not available โœ… Supports different UI for desktop and mobile
Advanced Features Basic features only Unsplash library, File Manager, Block Studio, and many more custom blocks
Technical Support Community support Professional technical support with faster response times

Learn more about Easy Email Pro.

๐Ÿ› ๏ธ Development

$ git clone git@github.com:zalify/easy-email.git
$ cd easy-email


$ pnpm install
$ pnpm run install-all
$ pnpm run dev

If you need some new features, we always welcome you to submit a PR.

๐Ÿ“„ License

The MIT License

About

Easy Email Editor is a feature-rich, top open-source SaaS email editor based on React and MJML.

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project