It’s time for the thrilling conclusion of our journey into one of the vital well-liked e mail frameworks obtainable: MJML (Mailjet Markup Language). Okay, so it wasn’t an enormous cliffhanger or something. However we’re positively excited to share the second half of this interview with you.
Once we final left Nicole Hickman, she simply completed exhibiting us the fundamentals of the right way to use MJML to shortly and effectively code responsive HTML emails. This time, we’re diving a little bit deeper to find superior MJML methods.
I requested Nicole a few of the commonest questions that I’ve seen e mail geeks questioning concerning the MJML framework. That features darkish mode, picture swapping, and overlapping content material in emails.
A part of the fantastic thing about MJML is its simplicity, as we noticed in Half 1 of this interview. However what occurs when it’s worthwhile to take issues a little bit additional that the framework permits? Try Nicole’s ideas within the video beneath. And don’t neglect to subscribe to Sinch E-mail on Acid on YouTube to catch new episodes of Notes from the Dev: Video Version.
(Go to our Useful resource Heart to view the complete transcription of this episode)
Introducing the <mj-raw> tag
In relation to superior MJML methods and conventional HTML e mail improvement, there’s a approach you will get the perfect of each worlds.
I’ll reduce to the chase right here. The <mj-raw>
tag is what you’ll want when it’s important to “get away of the field” of MJML, as Nicole put it. Principally, at any time when she desires to code one thing for which there’s no easy answer with MJML markup, Nicole makes use of <mj-raw>
to incorporate uncooked, responsive HTML.
Within the first installment of our exploration into MJML, you’ll recall how Nicole defined that elements like textual content, buttons, and tables at all times get enclosed in <mj-section>
and <mj-column>
tags.
The usage of <mj-raw>
is an exception. It’s an ending tag that gained’t embrace any MJML elements. As an alternative, you utilize it to code the identical approach you’d in a standard HTML file.
“There are numerous issues that MJML can do all by itself. However if in case you have the necessity to do one thing that will be a little bit extra cumbersome to try to do inside the MJML itself, you possibly can definitely bust out and simply wrap issues in
<mj-raw>
. That’s what it was developed for.”Nicole Hickman, Direct Advertising Developer, Fishawack Well being
To place it one other approach, you’re not fully tied to the MJML framework if you use it to develop responsive emails.
Darkish mode and MJML
When Nicole confirmed us how she creates emails with darkish and light-weight variations, she defined that numerous it takes place up within the <mj-head>
part.
If you happen to’ve seen any tutorials on the right way to code darkish mode emails, you’ll acknowledge the meta tags which might be used to let e mail purchasers know that your code provides each gentle and darkish mode variations:
<mj-raw>
<meta title="color-scheme" content material="gentle darkish">
<meta title="supported-color-schemes" content material="gentle darkish">
</mj-raw>
Under the usual CSS styling in Nicole’s boilerplate for this e mail structure is the place she continues including and defining darkish mode kinds, utilizing a root selector and the media question (prefers-color-scheme: darkish).
<mj-style>
:root {
color-scheme: gentle darkish;
supported-color-schemes: gentle darkish;
}
@media (prefers-color-scheme: darkish) {
...darkish mode kinds right here...
}
</mj-style>
Within the <mj-style>
tag above, Nicole consists of darkish mode CSS courses and tells e mail purchasers to cover gentle mode photos.
Nicole says it’s necessary to know the right way to specify CSS selectors when coding with MJML. That’s what permits the e-mail to modify to darkish mode preferences (background coloration, textual content coloration, and so on.) inside an <mj-section>
based mostly on what you outlined within the kinds inside the pinnacle part.
That’s why, for instance, Nicole used a right-angled bracket in her darkish mode kinds when defining the background coloration for tables in darkish mode.
.dark-mode-bg>desk {
background: #1E1E1F;
background-image: linear-gradient (#fec800, #fec800) !necessary;
}
Later, in an <mj-section>, you’d embrace the CSS class for the darkish mode background:
<mj-section background coloration="fff" css-class="dark-mode-bg">
When this will get parsed to HTML, the category goes right into a <div>
, however the colours truly get utilized to the primary <td>
in order that it seems within the cells of the desk. That’s why Nicole focused desk in her darkish mode kinds. In any other case, it wouldn’t override the backgrounds on her tables, which suggests they’d nonetheless present a light-weight mode background.
Watching the best way different builders work is superb! Nicole had me rethinking the best way I goal darkish mode. However we’ll have to avoid wasting all that for one more episode.
Picture swapping and MJML
One other query folks have about extra superior MJML entails picture swapping. Many occasions, you’ll need a picture that’s one measurement for desktop viewing and a unique measurement that’s optimized for cell gadgets.
By the best way, Nicole takes a “cell first” method to e mail improvement. For picture swapping, which means she finally ends up doing one thing that will seem to be counterintuitive.
Within the first grouping of kinds, she consists of something that will must be utilized inline to the tag. Nicole does this as a result of GANGA (Gmail App with Non-Google Accounts) doesn’t help media queries, that are used for concentrating on totally different display screen sizes.
So, by making use of the next code, she will be able to inform e mail purchasers to point out a sure picture on desktop however not cell:
<mj-type inline="inline">
.present {
show: none;
}
.cover {
mso-hide: all !necessary;
}
</mj-style>
Nicole additionally applies these courses to the media question as you’d anticipate. Nevertheless, by including !necessary;
to the top (see beneath) it overrides something within the desktop view.
@media solely display screen and (min-width:480px) {
.present {
show: block !necessary;
}
.cover {
show: none !necessary;
mso-hide: all !necessary;
}
}
Lastly, right here’s a have a look at the MJML code within the physique of Nicole’s e mail wherein she consists of each a 600 x 400 placeholder picture for desktop and a 320 x 400 placeholder picture for cell gadgets whereas making use of the suitable courses:
<mj-section>
<mj-column>
<mj-image src="https://through.placeholder.com/600x400" css-class="present” />
<mj-raw>
<!—[if !mso]><!---->
</mj-raw>
<mj-image src="https://through.placeholder.com/320x400" css-class="cover" />
<mj-raw>
<!--<[endif]-->
</mj-raw>
</mj-column>
</mj-section>
When Nicole switches over to the parsed HTML, we see that the inline class is show: none. However as a result of she used show: block together with !necessary;
that overrides the inline setting.
Additionally, discover that Nicole makes use of the <mj-raw> tag above so as to add conditional statements within the MJML that cover cell content material from Outlook’s desktop purchasers for Home windows.
Overlapping content material and MJML
One other method that skilled e mail builders use repeatedly is overlapping components in a design. For instance, you might have considered trying stay textual content overlayed on high of a graphic. That approach, the e-mail is accessible for display screen reader utilization, and essential copy will present up even when the recipient has photos turned off.
To make this occur in MJML, the <mj-raw> tag as soon as once more involves the rescue.
Nicole used some superior kinds, which e mail super-geeks Mark Robbins, Steven Sayo, and Rémi Parmentier shared with the group. You possibly can be taught extra about these strategies for overlay and absolute positioning from Steven Sayo on Medium and from a publish on Good E-mail Code by Mark Robbins.
When you’ve discovered the right way to use these code snippets to realize the sort of overlapping you need, it’s so simple as inserting it into both an <mj-style>
or <mj-raw>
tag.
Nicole informed me she selected to make use of <mj-raw>
with a daily <type>
tag for organizational functions as a result of she needed to maintain it as its personal separate string.
Let the experimentation start
Now that you simply’ve been launched to the fundamentals of this e mail framework and a few superior MJML coding methods, it’s time to start out taking part in round.
Nicole talked about a number of occasions that she did need to experiment with issues a bit to get all of this to work. However in the event you ask me, that’s a part of the enjoyable of being an e mail developer.
And right here’s some excellent news… Nicole says that the MJML Group on Slack is tremendous pleasant and useful. So, as you begin making an attempt out superior MJML methods and hit roadblocks, head over there to ask questions and make connections.
Talking of connecting… we’re simply getting began with Notes from the Dev: Video Version. There are extra nice ideas, methods, and tutorials coming your approach quickly. Ensure you subscribe on YouTube so that you aren’t not noted.
Creator: Megan Boshuyzen
Megan is a graphic designer turned e mail developer who’s labored on all elements of e mail advertising and marketing. She believes good emails for good causes make a optimistic distinction on the earth. Megan is presently working as an e mail developer for Sinch E-mail. Go to her web site and be taught extra at megbosh.com.
Creator: Megan Boshuyzen
Megan is a graphic designer turned e mail developer who’s labored on all elements of e mail advertising and marketing. She believes good emails for good causes make a optimistic distinction on the earth. Megan is presently working as an e mail developer for Sinch E-mail. Go to her web site and be taught extra at megbosh.com.