Email: a lost relic of the before-before times

Today on the Unfrozen Caveman show, I learned that when iOS displays a notification about new email, it ignores the text/plain part in a multipart/mixed message and instead displays the text/html part, after stripping all the tags without ceremony or finesse.

Because that's a totally reasonable thing to do.

It's not like "Hey I would like to display a plain-text version of this angry tag salad" is why multipart/mixed exists in the first place or anything.

My guesses on the thought process here, from least to most likely:

  • Eh, everybody just generates their text/plain part by stripping tags anyway, without even the courtesy-reacharound of turning <BR> into \n so why bother?

  • I tried that but then 90% of my mail notifications turned into, "Please use an HTML capable mail reader to view this message" because nobody generates text/plain parts but for unknown reasons they feel compelled to include them anyway.

  • By the time we are putting that dialog on the screen, we are thirty levels above the last framework that had access to the MIME parts, because that's how software works now, so fuck it, fuck it all, burn it all down.

  • Even though I'm on the team that writes a mail reader, I have not read RFC2046.

  • Herp derp I eat paste.

Previously, previously, previously.

Tags: , , , , , ,

34 Responses:

  1. Tamber says:

    "Read the spec? No time for that, we have a mail reader to write! It's only email, how hard can it be?"

  2. Jason says:

    Argh. When did that start? I specifically make sure that my software platform generates both text/plain and HTML parts because back in the day (iOS 9?) it /did/ respect the plain text portion and you got a much better notification because of it.

  3. deater says:

    coincidentally we were covering e-mail today in my networking class.

    I tried to amuse them by telling them it was the 8785th of September, only to realize all of them were born fairly deeply into the Eternal September.

    I then tried to see if they had any deeply felt opinions on top-posting or signature length and was met with blank stares. I've not yet decided if I think that's a good thing or a bad thing.

    We won't discuss how the "write a simple webserver using sockets" assignment went.

    • foo says:

      Please don't have them write the next nginx

      • deater says:

        haha and I thought the code in my Applesoft BASIC webserver was bad.

        yes, most of their problems were with C string parsing. I guess it's a good life lesson for them that you shouldn't program something in C unless you know what you are doing, and even when you think you do you still probably shouldn't. Even the assignments that could successfully serve up an html file exploded fairly spectacularly when I tested with a text file instead.

        The problem is I wanted them to see the relevant syscalls so they can make the connection with the three-way handshake. In ECE though they've only really been taught C (and I guess whatever CS teaches them in algorithms, probably Java). Maybe C++, but I'd rather poke my eye with a rusty fork than debug someone else's C++ code.

        • deater says:

          Also in class, I asked the students that once they read the request string from the socket, how could they use C to find the "GET /" substring.

          One student hopefully said "regex"?

          I had to struggle a bit to keep a straight face and said something to the effect that traditional C isn't really known for its regex support when another student suggested that you could use system() to pipe the string through perl. I sincerely hope they were kidding.

        • Jonathan says:

          I consider myself a reasonably (if reluctant) competent C programmer these days and I surprise even myself how much I screw up when trying to do even rudimentary string tasks in C. Here be dragons, nothing of value is buried here, etc. etc.

      • Billy says:

        Wow. That is absolutely astonishing.

    • Elusis says:

      I keep starting a "how to behave online" post aimed at psychotherapists (e.g. "don't force-add me to your mailing list" and "please don't quote the entire text of a mailing list digest in your response.")

      And then I stop, and I go stab a fork into the back of my hand for a while, because that accomplishes more.

      • Eeyore says:

        Since Gmail started hiding excerpts from both the sender and any readers, this prblem has gotten much worse.

  4. foo says:

    This post is probably the most effective piece I read that makes me want to give up on software development entirely. I mean, why try to do any quality work, if you'll quickly be crushed by GAFA's army of programming monkeys?

  5. Steve Allen says:

    Fidelity Investments now sends HTML-only e-mails where the Important Change To Your Funds message is only available as an image (with no alt-text) that is boobytrapped with web bugs so they can track where and when it gets read. I'm still waiting for a response to my query about how blind people are supposed to get the information about their money.

    • Steve Allen says:

      Also, the trouble ticket system which assumes top-posting replies so much that when my mailer generates a salutation that uses the From: header of their original, the trouble ticket system eats that and truncates all content afterwards. No reply from them either, but I've changed my salutation generator so they get a special case greeting "Dark Lord Voldemort" because in their fantasy world the consequences are worse than Harry Potter. If only Jon Postel were a Harry Potter kind of ghost.

  6. I have to agree that the most likely explanation is "Herp derp I eat paste.", because that seems to be the explanation for most current software design.

  7. Winston says:

    Nah. I'm even older than jwz. I turned 63 this year. And I listen to jwz because he seems quite intelligent (copyright Spock), and makes a shitload of sense. And I'm old and drunk and sad. But, and I am drunk now, but not sad, but fuck you young people. Well, not all of you, but fuck the ones who do not appreciate the wonders of Voyager and the wonders of the Cassini shots.

  8. Winston says:

    Oh for fuck's sake. I will, on Friday NZ time have to vote for a choice of cunts. Sorry, I'm English, and I realise that "cunt" is a bad word in the US, as opposed to a term of affection in the UK, but, seriously, would you vote for this?

    • Winston says:

      Also, and now I really do grow old, couldn't jwz commission some one to write an awk script to convert Tcl to perl to C++ to smeglang++? Did I say I was really quite drunk?

  9. Can I vote for All Of The Above?

  10. Steve Allen says:

    History lesson about what happens when implementations and specifications ignore each other:
    you get leap seconds
    Y'all don't want more computer issues like leap seconds, right?

  11. Ricky Morse says:

    In Mac OS X 10.10 (or possibly 10.9; I went from 10.8 to 10.10 directly), removes the ability to prefer plain text over HTML/RTF, and also removes the ability to switch from part to part.

  12. Al Iverson says:

    A lot of us in the email (sending) business keep the text/plain part in the mail our platforms generate solely because the mail scores modestly better in some old school spam filters like SpamAssassin. So we continue to include it, though I have no proof that it was actually exposed to any end recipient in the past 10+ years.

    • Eli the Bearded says:

      If you send me HTML email, I either delete it unread or lynx -dump to get text. And if I reply, it's text/plain.

      I recognize I'm in the minority here.

  13. Andrew G says:

    Jamie, 10+ years ago when I was working at an anti-virus company and writing/maintaining an email parser I emailed you to rant/commiserate about HTML email and I asked if it was possible that it had in fact originated with you during your time at Netscape.

    Unfortunately I can't find the email or your response but I recall that you admitted that it was possible that you had invented HTML email, and you may have apologized.

    • jwz says:

      I think I still have that. I'll try to dig it up and post it.

      • AntaBaka says:

        It's sort of on your "about" page - without any apology though:

        "1995 I designed, and Terry Weissman and I implemented, the Netscape Mail and News clients, versions 2.0 through 3.0. It's possible that HTML email is my fault. "

  14. Dusk says:

    Probably some combination of #1 and #2, plus:

    Sometimes the text/plain part is garbage in creative ways. For instance, I've seen text/plain parts with the same contents as the HTML part -- including the tags! -- or with the text of an entirely different message. (Presumably someone updated the HTML message but forgot to update the plaintext one, because their mail client didn't display it.)

  15. The Apple Watch displays the text/plain part and nearly every email is ""Please use an HTML capable mail reader to view this message".

  16. Grand Camel says:

    Next time put a trigger warning on RFC2046! I'm finally enough years removed from my anti-spam coding that I had forgotten that thing, now all the trauma memories of trying to grok MIME are making my amygdala flare up.