by Adam C. Engst <email@example.com>
The hubbub we caused with last week's "Email Attachment Format Explained" article is only just subsiding - indication, I think, that this topic creates strong feelings. It's frustrating when you think you're doing everything right with sending attachments but still can't get one through. This week I'll try to shed more light on the issue, and I also recommend that you read the threads these topics spawned on TidBITS Talk.
Loose Threads -- First, let me address some questions generated by last week's article, and then I'll look at how you work with attachment formats in the major Macintosh email clients.
Many people seemed confused about AppleDouble, with several asking "Is it a program?" To reiterate, AppleDouble, like AppleSingle, BinHex, Base64, and uuencode, is a file format - a specific organization of related bits. Every file on your hard disk exists in a specific format, whether it be the format created by AppleWorks, Microsoft Word, or StuffIt Deluxe. Some file formats like AppleDouble are handled within other programs almost exclusively, so you're unlikely to see a program devoted to creating and decoding AppleDouble files.
Many people recommended Adobe's PDF (Portable Document Format) as another format that's useful for sending files between platforms. Creating a PDF file is generally as simple as printing; see the TidBITS Talk message linked below for a list of ways to create PDF documents. To read a PDF document, you need Adobe's free Acrobat Reader. One tip that I hadn't realized previously: if you want to copy a chunk of text from more than a single page of a PDF document from within Acrobat Reader, you must first set the Default Page Layout to Continuous in File -> Preferences -> General Preferences. We have no idea what Adobe was thinking when they came up with this interface - who ever heard of modifying the functionality of a ubiquitous command like Copy based on your default page layout?
Another popular recommendation for cross-platform file support was the Zip compression and archiving format that's common in the Windows world. Although utilities for creating and expanding Zip archives on the Mac have been around for a long time, they haven't been particularly well known. That should become less of a problem now that Aladdin has released the shareware DropZip 5.5 (bundled with StuffIt Deluxe 5.5), which enables you to create Zip archives. One of the problems with Zip in the Macintosh world is that Zip by default only preserves the data fork of Macintosh files. Aladdin's DropZip 5.5 (as well as Tom Brown's $15 shareware ZipIt utility) can optionally encode Macintosh files with resource forks in the protective binary packaging format MacBinary before compressing, which lets Zip archives contain Macintosh files without fear of data loss. Unfortunately, a Zip archive with MacBinary-encoded files inside isn't necessarily usable in Windows unless the user decodes using Aladdin's free Aladdin Expander. For more details about MacBinary, see "Macintosh Internet File Format Primer" in TidBITS-445.
To simplify the lives of less-experienced recipients, you might include information in the body of the message telling them precisely what you're attaching and the details of any compression and encoding formats you've used. Then, if something goes wrong, they have a chance at figuring out what to do, particularly if you included some boilerplate information about how to decode, expand, and open attached files.
Finally, I want to note that although there are lots of "shoulds" when it comes to which attachment formats work, the only absolute answer is the one you can verify for yourself in a particular instance. If there are weird email gateways in between you and your recipient, if either of you are using LAN-based email programs that have not been updated to support true Internet email, or the phase of the moon is wrong, your attachments may come through corrupted. The only solution is to try alternate attachment formats and see what you can make work.
Test It Yourself -- I spent a bit of time sending messages with attachments to friends who use AOL in an attempt to figure out what AOL does with different attachment formats. After I was done, I realized that with a little work in Eudora, I could set something up for anyone to receive the same tests and see how they worked. With a combination of stationery, filters, and automatic mail checks, I've created a simple auto-reply system using a copy of Eudora Pro running on a Power Mac 7100 here. When Eudora receives a message with a specific subject line, it returns a file using a specific encoding format.
For instance, want to see if you can receive an inline GIF encoded with Base64 via your Lotus Notes account at work? Just send the appropriate test message and Eudora will reply. The system checks for new requests every 10 minutes, so it could be 20 minutes or more before you receive a response, depending on traffic. Please use this service only for serious testing, since it's not intended to support extremely high loads.
The four attachment formats I've used are AppleDouble, Base64, BinHex, and uuencode. My ten test files are an inline GIF image, an inline JPEG image, a Word document, a PDF document, a SimpleText file, a Macintosh application (a self-extracting archive), a Windows application (an .exe self-extracting archive), a stuffed Word document, a stuffed Macintosh application, and a Zip archive of two Word files. That provides 40 possible combinations, including one (the uuencoded Macintosh application) that is guaranteed to fail.
To access these messages, visit the Web page below and click the links for combinations that interest you. The system checks for exact matches in the subject lines to avoid loops and reduce the impact of spammers, so I strongly recommend that you don't try to guess at the appropriate subject lines.
Unfortunately, there's no way to reverse the testing and figure out how to receive attachments on the Mac from random other email programs. That you'll have to do on your own.
Looking at Specific Email Programs -- All that said, here are details on using different encoding formats with each major Macintosh email program.
AOL: There's no way to change how AOL formats attachments, which are sent as Base64 unless a resource fork is present, in which case at least recent versions of the AOL software use AppleDouble. Text files (which includes anything you manually encode with BinHex or uuencode before sending) are sent in the body of the message rather than as an attachment. To decode such files, save the text out to a file, concatenating it carefully if necessary, and then drop the resulting file on StuffIt Expander.
More the issue is how AOL receives attachments, a concern that's generally moot with true Internet email programs. For instance, AOL cannot accept multiple attachments in a single message (try compressing multiple files into an archive or sending them separately). If you're sending a file to an AOL user, the best attachment format appears to be Base64, which worked in the most test cases and with the least additional fussing. BinHex and uuencoded documents generally arrived intact, but came in with the .mim extension (for MIME) and were usable only after they were decoded by StuffIt Expander (Mac) or Aladdin Expander (Windows). AppleDouble attachments also usually arrived intact, but with the filename "Unknown." They could be opened manually on the Mac if you chose Open from the File menu in an appropriate program, and in Windows if you added an appropriate filename extension. AOL appears to do some image conversion, so the tests of inline JPEG images worked, but arrived as PNG files.
These test were done with AOL 4.0 on both the Mac and Windows; the Windows 5.0 client may have different behaviors. But remember, you never know what version of AOL someone may be using, and the older it is, the more likely you are to have trouble.
Emailer: In Claris Emailer 2.0v3, click the disclosure triangle next to the paper clip in an outgoing message to reveal the attachments pane. An Encoding pop-up menu lets you choose among different formats including: Service default, No encoding, BinHex, Base64, uuencode, AppleSingle, and AppleDouble. The service default option is tricky, since it's necessary for Emailer's compatibility with CompuServe and AOL mail, but if you use it for Internet email, it picks up the encoding from the account settings, which default to BinHex. Emailer also tries to compress attachments automatically; you can disable that feature with a checkbox in the attachments pane. Note that Emailer happily lets you send - without warning - an attachment that requires its resource fork via uuencode or Base64 even though the file will be destroyed in the process.
Eudora: In all versions of Eudora, you set the default attachment format in the Attachments panel of the Settings dialog box. You can override that setting for each individual message using the attachment format pop-up menu in the upper left of an outgoing message window. Turn on balloon help before clicking that menu to see descriptions of each option. Eudora can send attachments using AppleDouble, AppleSingle, BinHex, and uuencode (Eudora Pro only). Eudora can also send in Base64 format as long as the file being sent doesn't require more protection for its resource fork. The easiest way to set Base64 is to choose AppleDouble as the encoding format, and then turn off the "Always include Macintosh info" button, which is the button in the outgoing message window's toolbar, next to the QP button. Turn on balloon help and point at it for more information.
Green 1.0b8.1: In Green, you set the attachment format in the Send tab of the Preferences dialog. You can choose among AppleDouble, Base64, and BinHex. Green is up front about Base64 sending only the data fork, but you can't change the encoding format for individual messages.
Mailsmith: In Mailsmith, you set the default attachment format in the Preferences dialog, and you can override those settings on a per-attachment basis in the Enclosures tab of the outgoing message you're composing. Mailsmith supports AppleDouble, AppleSingle, Base64, BinHex, and uuencode and can compress attachments automatically with StuffIt (you can override that compression on a per-attachment basis).
Mulberry: Mulberry offers the standard formats, AppleDouble, AppleSingle, Base64, BinHex, and uuencode, and lets you set a default within the Attachment panel of the Preferences dialog, plus override that setting on either a per-message or per-attachment basis. Mulberry can also automatically switch formats to override the default setting (which is Base64 initially) when the attachment contains a resource fork that would otherwise be lost. Interestingly, Mulberry (and some other email programs) finds this information from the Advanced Options of an entry in File Mappings section of the Internet control panel.
Musashi: In the Account tab in Musashi's Preferences dialog, you can choose from "Base64 [AppleDouble]," Base64 [AppleSingle]," "Base64 [Data Fork]," BinHex, and uuencode. You can switch formats on a per-message basis in the Options tab within each outgoing message window. Musashi appears to be the only email program that explicitly says that the AppleDouble and AppleSingle binary packaging formats also use the Base64 transfer encoding format. (See the article "Macintosh Internet Format Primer" in TidBITS-445 for details on the distinction.)
Netscape Communicator 4.7: You don't have many options with Netscape Communicator; the only control over attachment format is in the third tab down in an outgoing message window. A checkbox labeled "Use uuencode instead of MIME for attachments" lets you toggle between uuencode and something Netscape is calling MIME. In this case, and based on some posts I've seen from Netscape employees, I suspect they're checking the attachment itself to see if it has a resource fork and using AppleDouble plus Base64 if it does, and just Base64 if it doesn't. Netscape loses points for failing to mention anything regarding attachment formats in the online help.
Outlook Express 5.0: Like Emailer, click the Attachments disclosure triangle in an outgoing message to reveal the attachments pane. You can change the attachment format by clicking the text describing the attachment (it's one of Outlook Express's funny pop-up pseudo-dialog boxes) and then clicking the radio button corresponding to the format you want. Outlook Express 5.0 supports AppleDouble, BinHex, Base64, and uuencode. It can also compress attachments automatically, add Windows extensions to filenames, and optionally not send attachments to people in the Cc and Bcc lines. Outlook Express 5.0 also gets points for clear wording, since its options are labelled with plain English recommendations first, and format names second, as in "Any computer (AppleDouble)," "Macintosh (BinHex)," "Windows (MIME/Base64)," and "UNIX (uuencode)." And, if you attempt to send a file with a resource fork using Base64 or uuencode, Outlook Express warns you that it may be damaged.
PowerMail 2.4v7: CTM Development's PowerMail supports AppleDouble, BinHex, Base64, and uuencode, and lets you set a default in the Encoding screen of the Preferences dialog, plus change the format on a per-message basis within outgoing message windows.
QuickMail Pro 2.0: Of the email programs mentioned here, QuickMail Pro 2.0 offers the most flexibility in dealing with attachment formats, plus it is the only program to differentiate between binary packaging (called File Format in the Edit Mail Encoding preferences dialog box) and transfer encoding (called Byte Encoding). You can choose among Data Only, AppleDouble, AppleSingle, and BinHex for binary packaging, and separately choose 8-bit (no encoding), Base64, or uuencode for transfer encoding. With these choices, you can create custom encoding settings, so you could define AppleDouble and Base64 as the encoding to use for "Modern Windows" and Data Only plus uuencode for "Old Windows," and so on. That's not all: within QuickMail Pro's address book, you can specify which of your custom encoding settings to use for each person, and if you're sending mail to people who aren't in your address book, you can change the encoding for each recipient of a message. Although this level of flexibility may seem like overkill, it's welcome as long as we have to cope with all of these formats.
Sending It Off -- As much as my head is reeling with all the details I've tried to bring together here, there are bound to be situations that defy logical explanation and everything you try. In those cases, remember that it's generally not your fault, if you're using one of the programs above, and the best course may simply be to encourage your recipient to try reading mail using a modern Internet email program using a true ISP rather than AOL or some standards-flouting LAN-based email package.