Three Carriers
Back in the feature-phone era, I was building an MTA for large-scale email delivery.
These days, Gmail, iCloud, and a few corporate addresses cover eighty percent of the cases. Everything is UTF-8, mostly follows RFC 5322, and multipart is just HTML and plaintext wrapped in multipart/alternative. None of that was true back then.
Email address "validity" was off from the start. A dot right before the @. Two dots in a row. abc..def@docomo.ne.jp actually came through our registration forms. Until April 2009, docomo and au were handing out addresses that violated the RFC. Even Google ran a special exception until 2015, letting invalid addresses through if the destination was ezweb or docomo. You couldn't just hold up the RFC and bounce them. People used those addresses every day. They were real.
Character encoding was even more complicated. Feature phones used Shift-JIS internally. The mail standard, though, was usually ISO-2022-JP (commonly called JIS). PC-to-PC email ran on that.
From our server to docomo or SoftBank, either SJIS or JIS would get through. The carrier converted to SJIS at their gateway and delivered to the handset. The trouble started with UTF-8, or any character not in the carrier's code table. Anything unrepresentable came through as 〓, the placeholder glyph for missing characters. Still, docomo and SoftBank were the easier two.
au was a different problem entirely. They used ISO-2022-JP with their own emoji embedded in the byte stream, and supporting them meant memorizing each carrier's emoji code tables. docomo, au, and SoftBank each placed their emoji at different code points. "Send an email" sounds like one operation. In practice you detected the recipient's carrier and switched the encoding and emoji convention to match.
Multipart was worse. DecoMail — Japan's HTML email format for feature phones — had per-carrier rules for everything: how to assemble it, how to embed attachments, even the order of Content-Type headers. "Send the same thing to every recipient" wasn't an option. The MTA had to split each message apart and rebuild it per destination.
Today you just write everything in UTF-8. Multipart means multipart/alternative and you're done. All that per-carrier branching code we had stuffed into MTAs at the height of the feature-phone era — gone. More convenient. That should be where the story ends.
Still, sometimes an email arrives and I check the encoding without thinking.