We are delighted to announce that we now have a more powerful and customizable commercial version available. If it is for internal use only, then the open-source version is sufficient. However, if your editor is a critical feature, I recommend using the commercial version. Check it out here .
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 | 
|---|
![]()  | 
Open source version: open-source.easyemail.pro
Commercial version: demo.easyemail.pro.
$ npm install --save easy-email-core easy-email-editor easy-email-extensions react-final-formimport 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>
  );
}
| 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 | 
$ git clone [email protected]: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.
The MIT License

