Scroll to navigation

TNEF(1) General Commands Manual TNEF(1)


tnef - decode Microsoft's Transport Neutral Encapsulation Format


tnef [options] [FILE]

tnef {--help | --version}


This manual page documents the tnef filter. tnef decodes e-mail attachments encoded in Microsoft's Transport Neutral Encapsulation Format (hereafter, TNEF), which "wraps" Microsoft e-mail attachments.

Unfortunately, these "wrapped" attachments are inaccessible to any e-mail client that does not understand TNEF. Fortunately, the tnef filter can be used by any MIME-aware client to unpack these attachments.


use FILE as input ('-' denotes stdin). When this option is omitted, tnef reads data from stdin.
unpack file attachments into DIR.
limit maximum size of extracted archive (bytes)
list attached files, do not extract. For each file in the datafile the file name and full path will be printed.

If the verbose option is also provided then this option acts as the --list-with-mime-types option and also prints the file length (in bytes) and the date of the file before the other data.

same as list option but also prints MIME type and content ID of each file after filename and file path.

ask for confirmation for every action.
when extracting attachments, overwrite existing files.
when extracting attachments, if file FOO will be overwritten, create FOO.n instead.
honor file pathnames specified in the TNEF attachment. For security reasons, paths to attached files are ignored by default.
Save message body data found in the TNEF data. By default tnef only extracts the attached files and not the message body.

There can be up to three message bodies in the file, plain text, HTML encoded, and RTF encoded. Which are saved is specified by the --body-pref option. By default the message bodies are written to a file named message with an extension based upon the type (txt, html, rtf).

Specifies which of the possibly three message body formats will be saved. PREF can be up to three characters long and each character must be one of 'r', 'h', or 't' specifying RTF, HTML or text. The order is the order that the data will be checked, the first type found will be saved. If PREF is the special value of 'all' then any and all message body data found will be saved. The default is 'rht'.
DEPRECATED. Equivalent to --save-body=FILE --body-pref=r
show usage message.
display version and copyright.
produce verbose output.
enable debug output. (This will produce a very large amount of output.)


tnef ignores the OEMCodePage data in the data file. It assumes Unicode data.


The following example demonstrates typical tnef usage with a popular Unix mail client called "mutt".

Step 1 — Configure ~/.mailcap

Mutt can't use tnef for its intended purpose until an appropriate content type definition exists in ~/.mailcap. Here's a sample definition:

application/ms-tnef; tnef -w %s

This mailcap entry says that whenever the MIME content type:


is encountered, use this command to decode it:

tnef -w %s

The latter command string invokes tnef, specifying both the -w option and the attachment (created as a temporary file) as command line arguments.

Step 2 — Add The Filter To $PATH

Mutt can't invoke tnef if the filter isn't accessible via $PATH.

Step 3 — Test Mutt

Use mutt to read a message that includes a TNEF attachment. Mutt will note that an attachment of type "application/ms-tnef is unsupported".

Press the "v" key to open mutt's "view attachment" menu.

Move the cursor over the TNEF attachment and press the enter key to "view" the attachment. Mutt will launch tnef and invoke it using the command line syntax specified in ~/.mailcap (step 1). tnef then decodes all file(s) included in the TNEF attachment, prompting for confirmation prior to creating an individual file (refer to -w option above). -w is useful here because it gives the end user a chance to view the filename(s) included in the mail message.

Note that Mutt's attachment menu also supports a pipe option, which permits the user to pipe attachments to an external filter (how convenient). So, to list the contents of a TNEF attachment prior to decoding it, press the "|" key and enter this command:

tnef -t


metamail(1), mailcap(4), mutt(1), other email clients.


Mark Simpson <>


Please report issues via this project's issue tracker on GitHub:


This web page:

describes how to configure Microsoft email clients so that the TNEF format is disabled when sending messages to non-TNEF-compatible clients.