My take on the use of file extensions and other platform-specific
type information is a bit different.
If the file you are sending is of a standard or well-known MIME
content-type, then you maximize interoperability by labelling the file
with that content-type, rather than with application/octet-stream.
If the file you are sending is only meaningful on platform X,
you might as well use X's typing mechanism to convey the type
information. That way there's no chance the wrong type will be used.
For PCs this information is part of the file name, and MIME already
provides a convenient way to pass this information.
However, there's no guarantee that the name of a file actually reflects
its MIME type. A MIME mail composer that uses a file's name to determine
the MIME content-type will mislabel some files. (If this happens very often,
MIME mail *readers* will then be taught to examine magic numbers in body
parts, because they cannot trust the content-type label in the message.)
1. Be careful about using file names to determine the MIME content-type.
composers should use magic numbers and/or sender confirmation of the
type (e.g. "Send FOO.TXT as a Microsoft Word file (y/n)?") before sending.
2. If you aren't pretty sure of the MIME type, or if it is inherently
platform-specific, send it as application/octet-stream.