# Simplified HTML emails

**URL:** https://meta.discourse.org/t/simplified-html-emails/62600
**Category:** Feature
**Tags:** pr-welcome
**Created:** [12 mei 2017 om 16:23 UTC](https://meta.discourse.org/t/simplified-html-emails/62600 "2017-05-12T16:23:23Z")
**Posts on this page:** 20
**Page:** 1

<div class="post-metadata">

### Author: ![LeoMcA](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/leomca/32/87233_2.png) [@LeoMcA](https://meta.discourse.org/u/LeoMcA)
#### Post date: [12 mei 2017 om 16:23 UTC](https://meta.discourse.org/t/simplified-html-emails/62600/1 "2017-05-12T16:23:23Z")

</div>

A common complaint I’ve heard about Discourse within Mozilla is the HTML emails.

I had always somewhat dismissed this complaint as coming from an irrational fear of HTML in emails (if it doesn’t belong in emails, does it _really_ belong in [phone operating systems](https://en.wikipedia.org/wiki/Firefox_OS)?) and, after all, Discourse sends multi-part emails so you can just opt to read the plaintext part. Right?

That’s been the proposed solution in topics here, of [varying](https://meta.discourse.org/t/plain-text-e-mail-notifications/13895) levels of [amusement](https://meta.discourse.org/t/moss-roadmap-mailing-lists/36432/38).

I now realise I was a bit quick to dismiss this complaint. The issue isn’t so much an inherent dislike of HTML in emails, but rather its overuse. Users want the simplicity of plaintext, but to keep inline links and bullet points.

Hence this proposal for simplified HTML emails, behind a global pref, because I completely recognise this is a pretty specific problem to Mozilla and other communities wanting to use Discourse as a mailing list replacement.

By far the biggest simplification which can be made is by not using tables. They may make layout easier, but make responding inline really rather awkward:

 ![](https://global.discourse-cdn.com/meta/original/3X/e/e/eeed5abb5b92229a8f92344fff9bbc21a5ce762e.gif)

Removing the header would also simplify things, since the most necessary information will already be displayed by any decent email client:

 ![](https://global.discourse-cdn.com/meta/original/3X/2/b/2b5c84a43d7dc24dc763c2e58e1b47f19a023620.png)

And the footer shouldn’t put so much emphasis on visiting the topic to respond:

![](https://global.discourse-cdn.com/meta/original/3X/9/9/99c9637792f4489da4615755ba0a22d19f6ab778.png)

When serving as a mailing list replacement, the primary method of responding should be by replying to the email. I’m envisioning a footer a lot more like how Google Groups does it:

 ![](https://global.discourse-cdn.com/meta/original/3X/0/7/073ee6e2d78b9d7095a78aa6665cd8c686e1cacf.png)

Indeed, Google Groups doesn’t even tell you you can respond by replying because, well, it’s email! What else would you do?

I would see an ideal simplified footer being something like:

* * *

You received this message because you are watching the Mozilla Discourse “Participation Systems” category.  
To unsubscribe from these emails, click here.  
Reply to this email to respond, or visit the topic.  
To post to this category, send email to parsys@mozilla.discourse.

* * *

_TL;DR_

- No tables
- No header
- Google Groups-esque footer

This is something we’re willing to put development resources into, but want to get feedback from other mailing list communities on, and co-ordinate with you upstream.

---

<div class="post-metadata">

### Author: ![codinghorror](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/codinghorror/32/110067_2.png) [@codinghorror](https://meta.discourse.org/u/codinghorror)
#### Post date: [12 mei 2017 om 17:44 UTC](https://meta.discourse.org/t/simplified-html-emails/62600/2 "2017-05-12T17:44:23Z")

</div>

Responding inline is quite evil and should be avoided regardless..

---

<div class="post-metadata">

### Author: ![erlend\_sh](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/erlend_sh/32/119475_2.png) [@erlend\_sh](https://meta.discourse.org/u/erlend_sh)
#### Post date: [12 mei 2017 om 20:16 UTC](https://meta.discourse.org/t/simplified-html-emails/62600/3 "2017-05-12T20:16:07Z")

</div>

Definitely not a fan of inline replies in emails (no email client seems to treat that the same way) but I’m certainly in favor of this for all the other reasons mentioned. The simpler our email HTML is the better. Newer apps like Google Inbox treat our emails quite oddly sometimes (this is probably something I should be reporting on more)

---

<div class="post-metadata">

### Author: ![codinghorror](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/codinghorror/32/110067_2.png) [@codinghorror](https://meta.discourse.org/u/codinghorror)
#### Post date: [12 mei 2017 om 20:24 UTC](https://meta.discourse.org/t/simplified-html-emails/62600/4 "2017-05-12T20:24:20Z")

</div>

You have to realize, though, that many email clients have what can charitably be called “nightmarish” support for HTML. MS Outlook is one of the worst offenders and actually went _backwards_ in HTML support in latest releases.

That is, for email you are often better off pretending it is 1999 and no HTML features after that point were ever invented or even used, including a lot of CSS…

> [@LeoMcA](#):
>
> by far the biggest simplification which can be made is by not using tables.

so, about that…

This is an extremely high risk, low reward change.

---

<div class="post-metadata">

### Author: ![tophee](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/tophee/32/73406_2.png) [@tophee](https://meta.discourse.org/u/tophee)
#### Post date: [12 mei 2017 om 23:16 UTC](https://meta.discourse.org/t/simplified-html-emails/62600/5 "2017-05-12T23:16:20Z")

</div>

> [@codinghorror](#):
>
> You have to realize, though, that many email clients have what can charitably be called “nightmarish” support for HTML. MS Outlook is one of the worst offenders and actually went backwards in HTML support in latest releases.

I’m not sure I understand how this is an argument against the proposed changes. I am one of those Outlook users routinely annoyed by its bad HTML support and discourse mails are among the worst in Outlook, especially the summary emails. So my thought while reading this thread was that things might improve with simplifier HTML. But maybe I’m just not grasping the proposed change?

---

<div class="post-metadata">

### Author: ![LeoMcA](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/leomca/32/87233_2.png) [@LeoMcA](https://meta.discourse.org/u/LeoMcA)
#### Post date: [13 mei 2017 om 00:01 UTC](https://meta.discourse.org/t/simplified-html-emails/62600/6 "2017-05-13T00:01:04Z")

</div>

> [@codinghorror](#):
>
> Responding inline is quite evil and should be avoided regardless..

> [@erlend\_sh](#):
>
> Definitely not a fan of inline replies in emails

I’m a bit of a fan, which I think shows itself by how much I quote on Discourse 😉

But joking aside, it’s always been a common and popular practice within Mozilla, and is far easier to do with Mailman or Google Groups (because they don’t wrap content in a table).

> [@codinghorror](#):
>
> That is, for email you are often better off pretending it is 1999 and no HTML features after that point were ever invented or even used, including a lot of CSS…

Right, but this is exactly what I’m wanting to achieve with simplified HTML. Not to replace tables with flexboxes, but rather good ol’ fashioned `<br>`'s.

> [@LeoMcA](#):
>
> By far the biggest simplification which can be made is by not using tables.

> [@codinghorror](#):
>
> so, about that…
> 
> This is an extremely high risk, low reward change.

Once you’ve removed the header, is there any risk at all here? This is the table as it currently stands:

 ![](https://global.discourse-cdn.com/meta/original/3X/9/b/9b25ce04a9e3f9c2db37a2d9bff566bd31e663c3.png)

So without the header we have a table of one column and one row. That seems like rather an unnecessary table to me.

> [@tophee](#):
>
> discourse mails are among the worst in Outlook, especially the summary emails

Summary emails are one of the places I wouldn’t support removing tables. I’m only proposing we remove them because they break responding inline, and where they break responding inline, and the summary email isn’t a respondable-to email. In fact, I’m not sure the layout of the summary email would be possible without the use of tables.

---

<div class="post-metadata">

### Author: ![codinghorror](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/codinghorror/32/110067_2.png) [@codinghorror](https://meta.discourse.org/u/codinghorror)
#### Post date: [13 mei 2017 om 00:02 UTC](https://meta.discourse.org/t/simplified-html-emails/62600/7 "2017-05-13T00:02:02Z")

</div>

> [@LeoMcA](#):
>
> So without the header we have a table of one column and one row. That seems like rather an unnecessary table to me.

Maybe, if you can prove it by running it through [https://litmus.com](https://litmus.com) for the top 10 email clients, then I’ll believe you!

---

<div class="post-metadata">

### Author: ![LeoMcA](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/leomca/32/87233_2.png) [@LeoMcA](https://meta.discourse.org/u/LeoMcA)
#### Post date: [13 mei 2017 om 00:57 UTC](https://meta.discourse.org/t/simplified-html-emails/62600/8 "2017-05-13T00:57:59Z")

</div>

10? How about 24?

 ![](https://global.discourse-cdn.com/meta/original/3X/d/2/d275b6303dcd41b154a415685108cda0f63820e6.png)

Looks pretty good to me 😉

---

<div class="post-metadata">

### Author: ![codinghorror](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/codinghorror/32/110067_2.png) [@codinghorror](https://meta.discourse.org/u/codinghorror)
#### Post date: [13 mei 2017 om 01:21 UTC](https://meta.discourse.org/t/simplified-html-emails/62600/9 "2017-05-13T01:21:16Z")

</div>

That’s just a blockquote; where is the table bit at the top with the author info?

---

<div class="post-metadata">

### Author: ![LeoMcA](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/leomca/32/87233_2.png) [@LeoMcA](https://meta.discourse.org/u/LeoMcA)
#### Post date: [13 mei 2017 om 01:48 UTC](https://meta.discourse.org/t/simplified-html-emails/62600/10 "2017-05-13T01:48:02Z")

</div>

> [@codinghorror](#):
>
> where is the table bit at the top with the author info?

> [@LeoMcA](#):
>
> Removing the header would also simplify things, since the most necessary information will already be displayed by any decent email client

> [@LeoMcA](#):
>
> So without the header we have a table of one column and one row.

Maybe I wasn’t clear enough: by header I meant that table bit at the top with the author info.

Enough author info already appears in the `From` and `Date` email headers to make this header unnecessary, _when trying to create a mailing list style experience_.

This is why I thought you were joking…

I think this also bears repeating, and emphasising:

> [@LeoMcA](#):
>
> Hence this proposal for simplified HTML emails, **behind a global pref** , because I completely recognise this is a pretty specific problem to Mozilla and other communities wanting to use Discourse as a mailing list replacement.

If anything here can be more generally applied, that’s great, but the primary goal of the proposal isn’t to change default behaviour, but rather add an option for simpler, more mailing list-esque, emails out.

---

<div class="post-metadata">

### Author: ![codinghorror](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/codinghorror/32/110067_2.png) [@codinghorror](https://meta.discourse.org/u/codinghorror)
#### Post date: [13 mei 2017 om 02:09 UTC](https://meta.discourse.org/t/simplified-html-emails/62600/11 "2017-05-13T02:09:37Z")

</div>

Strongly disagree, username, full name, avatar and title would all be missing.

I suggest you try rebuilding that without tables, as you proposed.

---

<div class="post-metadata">

### Author: ![codinghorror](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/codinghorror/32/110067_2.png) [@codinghorror](https://meta.discourse.org/u/codinghorror)
#### Post date: [13 mei 2017 om 20:05 UTC](https://meta.discourse.org/t/simplified-html-emails/62600/12 "2017-05-13T20:05:35Z")

</div>

It strikes me that you could start with **Step Zero** :

 ![](https://global.discourse-cdn.com/meta/original/3X/8/8/8848ed6d4f202c328dac9e2cbf4196b336a2fd0a.png)

Make _just the header_ a table, the part in the top `<tr>` row pictured ↓

 ![](https://global.discourse-cdn.com/meta/original/3X/f/8/f8d4248e49f409a20dbf0a77c7b9e8b1329bae1e.png)

… and **move the rest of the email, the bottom `<tr>` row ↑ , outside that table**.

---

<div class="post-metadata">

### Author: ![LeoMcA](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/leomca/32/87233_2.png) [@LeoMcA](https://meta.discourse.org/u/LeoMcA)
#### Post date: [16 mei 2017 om 00:47 UTC](https://meta.discourse.org/t/simplified-html-emails/62600/13 "2017-05-16T00:47:22Z")

</div>

> [@codinghorror](#):
>
> Strongly disagree, username, full name, avatar and title would all be missing.

That’s sort-of the point, though. Putting all that metadata at the top of the email clutters it up, and I’m aiming for simplicity here.

GitHub does this, dropping its avatar, username and title:

 ![](https://global.discourse-cdn.com/meta/original/3X/9/4/94d18206ee348c59743958304cb7b2c15e78cb44.png)

---

<div class="post-metadata">

### Author: ![codinghorror](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/codinghorror/32/110067_2.png) [@codinghorror](https://meta.discourse.org/u/codinghorror)
#### Post date: [16 mei 2017 om 01:23 UTC](https://meta.discourse.org/t/simplified-html-emails/62600/14 "2017-05-16T01:23:55Z")

</div>

Not the same, github does not have title or full name, plus it lacks optional group overlays on avatars too.

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [16 mei 2017 om 16:06 UTC](https://meta.discourse.org/t/simplified-html-emails/62600/15 "2017-05-16T16:06:53Z")

</div>

I think there is a huge divide here, which is why you are having trouble parsing this:

On one side of the ⛰ you have users who use “email” as a “trigger” to get them to visit forums.

On the other side you have users who want to do the **majority** of interaction via email, they do not care that a forum exist, all the want is MAILMAN foreva ™

For the mailman users:

- They do not care about titles and avatars, email is enough, when they see all this duplication they have an internal fit.

 ![](https://global.discourse-cdn.com/meta/original/3X/8/f/8fcc0a0d97630c481f874ac813af4a28c2dd5f8d.png)

- They also do not care about all the emphasis to visit the site, large footers and big blue buttons turn them off.

- They hate the way titles are full of [XXXX] [YYYY] before they see actual title.

I do not see us being able to make both “groups” of users happy out of the box that easily.

What I would prefer to see done here is to provide the extensibility to override these templates.

Where I would recommend starting is with a plugin that allows users to select an email template as “minimal” or something along those lines. Then @LeoMcA can have all the Mailman ninjas 👔 simply select a different “minimal” template.

I think it is incorrect to look for a solutions that works for two groups that have almost nothing in common. We will just end up making everyone unhappy.

---

<div class="post-metadata">

### Author: ![tobiaseigen](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/tobiaseigen/32/539204_2.png) [@tobiaseigen](https://meta.discourse.org/u/tobiaseigen)
#### Post date: [16 mei 2017 om 17:51 UTC](https://meta.discourse.org/t/simplified-html-emails/62600/16 "2017-05-16T17:51:18Z")

</div>

> [@sam](#):
>
> I think it is incorrect to look for a solutions that works for two groups that have almost nothing in common. We will just end up making everyone unhappy.

This sums it up nicely. Here on meta, we’ve been through this conversation several times already through the years, and I’ve resigned myself to look to the future and think of discourse more as a self-hosted facebook equivalent than an upgrade to mailman or google groups.

Here are two readily available examples:

> [@Migrating from Google Groups](https://meta.discourse.org/t/migrating-from-google-groups/24695/5):
>
> We are facing this in my community as well, but the approach we are taking is actually the opposite - the benefits of logging in are so great that we push back (gently, gently) to get people to log in more and more. We’ve found that explaining the benefits works. It’s better and more fun to participate in discussions by logging in, and it’s pretty easy to do so. On the other hand supporting email-in users by fixing their posts, answering questions and smoothing over frustrations are a real heada…

> [@Option to always receive Activity Summaries even when you've been on the forum](https://meta.discourse.org/t/option-to-always-receive-digests-even-when-youve-been-on-the-forum/16637/4):
>
> What happened to this option? I was just asked about precisely this issue by someone in my community and now see that the settings available changed at some point. We are in the process of trying to identify the “ideal settings” for email notifications for our community which we migrated to discourse from google groups. We are trying to encourage people to participate online but because we are a global network with people in “internet-remote” places, email remains key, and digests seem to be th…

---

<div class="post-metadata">

### Author: ![LeoMcA](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/leomca/32/87233_2.png) [@LeoMcA](https://meta.discourse.org/u/LeoMcA)
#### Post date: [16 mei 2017 om 18:03 UTC](https://meta.discourse.org/t/simplified-html-emails/62600/17 "2017-05-16T18:03:38Z")

</div>

> [@sam](#):
>
> I do not see us being able to make both “groups” of users happy out of the box that easily.

Right, this was what I was trying to get at by proposing putting this behind a global pref, thanks for putting it more clearly.

> [@sam](#):
>
> Where I would recommend starting is with a plugin that allows users to select an email template as “minimal” or something along those lines.

I hadn’t considered that even within Mozilla there may be people who want to use email as a “trigger”, rather than for interaction - so a user preference makes more sense. We’d probably be wanting to set it to “MAILMAN foreva ™” mode by default, though 😉

> [@sam](#):
>
> What I would prefer to see done here is to provide the extensibility to override these templates.

This is required, I can’t see a way of managing to change the template used from a plugin without doing something horrific like monkey patching `ActionView::Helpers::RenderingHelper#render`.

And I think it makes sense to place these custom templates in a plugin - it allows individual Discourse instances to use whatever custom templates they want.

But I’m not sure between those two points what should be in core, and what should live in a plugin. Would you see this extensibility in core take care of the user preferences side of things, simply enabling a plugin to specify a template and name?

Or would you see the piece in core being more general, allowing any plugin to override any template, with this specific plugin hooking into that and handling the user preferences side? How would we decide, in core, which plugin gets the final say on what template gets rendered?

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [16 mei 2017 om 19:06 UTC](https://meta.discourse.org/t/simplified-html-emails/62600/18 "2017-05-16T19:06:12Z")

</div>

> [@LeoMcA](#):
>
> Or would you see the piece in core being more general, allowing any plugin to override any template, with this specific plugin hooking into that and handling the user preferences side?

Yes this is my preference.

> [@LeoMcA](#):
>
> How would we decide, in core, which plugin gets the final say on what template gets rendered?

I think that is imagining a problem that will, in practice, never exist

---

<div class="post-metadata">

### Author: ![codinghorror](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/codinghorror/32/110067_2.png) [@codinghorror](https://meta.discourse.org/u/codinghorror)
#### Post date: [16 mei 2017 om 22:37 UTC](https://meta.discourse.org/t/simplified-html-emails/62600/19 "2017-05-16T22:37:00Z")

</div>

I disagree; I think the HTML email was in a giant table for .. _zero good reasons_.

 ![](https://global.discourse-cdn.com/meta/original/3X/2/7/27a125f01e3904a8f82a1e946fdc2aae5ccd4ed1.png)

De-table-izing this in the HTML emails, which is currently active as you can see ↑ above, is worthwhile in the name of _simplicity_ alone, putting aside every single other issue.

KISS! 💏

---

<div class="post-metadata">

### Author: ![codinghorror](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/codinghorror/32/110067_2.png) [@codinghorror](https://meta.discourse.org/u/codinghorror)
#### Post date: [7 juni 2017 om 04:53 UTC](https://meta.discourse.org/t/simplified-html-emails/62600/20 "2017-06-07T04:53:59Z")

</div>

> [@LeoMcA](#):
>
> By far the biggest simplification which can be made is by not using tables.

Has this helped things now that this change shipped in 1.8?

[Next page](https://meta.discourse.org/t/simplified-html-emails/62600.md?page=2)
