In order to build great emails, every developer has the tendency of going crazy. To mitigate this, we've proposed Maily, a tool which can generate great emails using React, MJML and Express.
Maily runs as a service, to which you can POST data. It will return the appropriate HTML and text versions of your email respectively, based on the data you send to it.
As an example, you can run yarn example
(with Node 8+), and request an HTML email or a text email
You'll easily build your emails using reusable components in React, and Maily will transform it to the 1993 HTML required by clients!
This allows you to write re-usable email components in a nice declarative language. An example!
<Envelope registeredUser={true} unsubscribeLink={this.props.unsubscribeLink>
<Greeting name={this.props.name} />
<Text>Thank you for registering. Your account has been activated. Click the button below to start!</Text>
<ActionButton href="https://your.inventid.nl">Visit personal page</ActionButton>
</Envelope>
We have written two blogs posts on how you can create your emails using Maily, leveraging React in the process:
- Creating emails with the Maily API - How to part 1
- Creating emails with the Maily API - How to part 2
Or take a look at the /example
directory!
Internally, we use a Node.js project which houses our templates. Maily is added as the render server. Any service wishing to create an email, send the appropriate JSON in a HTTP POST to the correct template. The resulting HTML and text are added to the email, and then send.
This allows you to run maily as a simple stateless service in e.g. Docker. It also allows you to handle email as you wish, for example by adding attachments before sending.
git clone https://github.com/inventid/maily
cd maily
npm install
npm start
Open a browser and go to:
http://localhost:3000/{:template}?{key=value}&{...}
Data can be passed by using GET
with query parameters or POST
with a request body.