![Highlights from the 2024 Rails Community Survey](https://cdn.sanity.io/images/cgdhsj6q/production/23403d569510c059552479b14edbb91d35733b20-1024x1024.webp?w=400&fit=max&auto=format)
Security News
Highlights from the 2024 Rails Community Survey
A record 2,709 developers participated in the 2024 Ruby on Rails Community Survey, revealing key tools, practices, and trends shaping the Rails ecosystem.
MJML is a markup language designed to reduce the pain of coding responsive emails. It abstracts away the complexity of responsive design by providing a simple syntax that translates into responsive HTML.
Responsive Email Design
MJML allows you to create responsive email designs easily. The above code creates a simple responsive email with a 'Hello World' text.
<mjml>
<mj-body>
<mj-section>
<mj-column>
<mj-text>Hello World</mj-text>
</mj-column>
</mj-section>
</mj-body>
</mjml>
Custom Components
MJML provides a variety of built-in components like buttons, images, and text blocks. The above code demonstrates how to create a button that links to a URL.
<mjml>
<mj-body>
<mj-section>
<mj-column>
<mj-button href="https://www.example.com">Click Me</mj-button>
</mj-column>
</mj-section>
</mj-body>
</mjml>
Conditional Rendering
MJML supports conditional rendering for different email clients. The above code shows how to include content specifically for Microsoft Outlook.
<mjml>
<mj-body>
<mj-raw>
<!--[if mso]>
<mj-section>
<mj-column>
<mj-text>Microsoft Outlook specific content</mj-text>
</mj-column>
</mj-section>
<![endif]-->
</mj-raw>
</mj-body>
</mjml>
Handlebars is a popular templating engine that can be used to create dynamic HTML content, including emails. Unlike MJML, Handlebars does not provide built-in responsive design features, so you would need to handle the CSS and media queries yourself.
Pug (formerly Jade) is another templating engine that can be used to generate HTML. While it is powerful and flexible, it does not offer the same level of abstraction for responsive email design as MJML does.
Nunjucks is a templating engine inspired by Jinja2. It is highly extensible and can be used to generate HTML for emails. However, like Handlebars and Pug, it does not provide built-in support for responsive email design.
| Introduction | Installation | Usage | Contribute |
MJML is a markup language designed to reduce the pain of coding a responsive email. Its semantic syntax makes it easy and straightforward while its rich standard components library fastens your development time and lightens your email codebase. MJML’s open-source engine takes care of translating the MJML you wrote into responsive HTML.
npm install -g mjml
Via... click:
Compile the file and output the result in
a.html
$> mjml -r input.mjml
Redirect the result to a file
$> mjml -r input.mjml -o output.html
Watch a file and compile every time the file changes
$> mjml -w input.mjml -o output.html
import { mjml2html } from 'mjml'
/*
Compile an mjml string
*/
const htmlOutput = mjml2html(`<mj-body>
<mj-section>
<mj-column>
<mj-text>
Hello World!
</mj-text>
</mj-column>
</mj-section>
</mj-body>`)
/*
Print the responsive HTML generated
*/
console.log(htmlOutput)
<html>
<head>
<script src="dist/mjml.js"></script>
<script>
/*
Compile an mjml string
*/
var htmlOutput = mjml.mjml2html('<mj-body>' +
'<mj-section>' +
'<mj-column>' +
'<mj-text>' +
'Hello World!' +
'</mj-text>' +
'</mj-column>' +
'</mj-section>' +
'</mj-body>')
/*
Print the responsive HTML generated
*/
console.log(htmlOutput)
</script>
</head>
<body>
</body>
</html>
Issue the following in your terminal
$> mjml --init-component <name of your component>
# If your component cannot contain anything else than text:
$> mjml --init-component <name of you component> -e
# It means nothing inside it will be parsed by the mjml engine.
It will create a basic component template in a .js
file. Follow the instructions provided in the file
and read more about custom components in the documentation
Get your hands dirty by trying the MJML online editor! Write awesome code on the left side and preview your email on the right. You can also get the rendered HTML directly from the online editor.
Maxime | Robin | Loeck | Guillaume | Meriadec | Arnaud | HTeuMeuLeu | Emmanuel Payet |
FAQs
MJML: the only framework that makes responsive-email easy
The npm package mjml receives a total of 380,691 weekly downloads. As such, mjml popularity was classified as popular.
We found that mjml demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 6 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
A record 2,709 developers participated in the 2024 Ruby on Rails Community Survey, revealing key tools, practices, and trends shaping the Rails ecosystem.
Security News
In 2023, data breaches surged 78% from zero-day and supply chain attacks, but developers are still buried under alerts that are unable to prevent these threats.
Security News
Solo open source maintainers face burnout and security challenges, with 60% unpaid and 60% considering quitting.