One of the great things about UNIX in the 1970s was that most files were text files, but good things don’t last forever. By 1980, UNIX was getting more complex. People were starting to write programs that used binary files instead of flat files. These files needed to be emailed, and you couldn’t just ~r a binary file and vi it on the other end. Email messages were flat files (and still are today), and all the email software depended on that.
I wrote a dumb little program called “uuencode” to address this. All it did was turn a binary file into a text file by making it about 30% larger. Three bytes of binary content became 4 ordinary printable characters. You could uuencode a binary file and email it with a simple command. The recipient would write out the email message to another little program called uudecode, and the file would be recreated on their system. I added it to the BSD system and went on with my life.
Little did I know I had just invented binary email attachments.
It turns out that uuencode became the standard way people sent binary files by email. Around 1985, a PC email program called “cc:Mail” became widely used, and added a paper-clip button to attach a file. The attachment was formatted in uuencode format, because that had become the standard. Microsoft later put the same feature in their “MS Mail” system.
In 1992, Nathanial Borenstein created a much improved email encoding called “MIME” that eventually became the standard format for attachments. MIME had many other nifty features, and now everyone uses MIME. In 2017 the media interviewed Borenstein about how he had invented the email attachment 25 years earlier. What they missed is that we’ve had email attachments since 1980.
It also turns out that an email program at MIT had “Enclosures” in 1977. These were the same idea as attachments, but they only worked within the one server at MIT. Flat files worked fine, but there was no provision to encode binary files.