Handling MIME types How Sylpheed checks for Mime types

When attaching a file to a message (composing a new message), the MIME type of the attached file is choosen based on the file extension from the mapping list defined in the mime.types file(s). Sylpheed defines its MIME type mapping table by loading the system wide MIME types file, then the user file. The systeme file is SYSCONFDIR/mime.types (SYSCONFDIR can be defined a compile time), or if it does not exist, /etc/mime.types. The user file is $HOME/.sylpheed/mime.types.

A mime.types file consist of one MIME type definition per line, each definition line starting with the name of the MIME type, followed by a space separated list of the corresponding file extensions. The file can contain empty lines, and comments start with the # character and close at line's end.

Following is a typical mime.types file (an extract of mine): # This file controls what Internet media types are sent to the client for # given file extension(s). Sending the correct media type to the client # is important so they know how to handle the content of the file. # The Internet media type registry is at # . # MIME type Extension application/mac-binhex40 hqx application/mac-compactpro cpt application/msword doc application/pdf pdf application/postscript ai eps ps application/rtf rtf application/x-bcpio bcpio application/x-bzip2 bz2 application/x-csh csh application/x-gtar gtar application/x-gzip gz tgz application/x-kword kwd kwt application/x-kspread ksp application/x-kpresenter kpr kpt application/x-kchart chrt application/x-latex latex application/x-sh sh application/x-shar shar application/x-shockwave-flash swf application/x-tar tar application/x-tcl tcl application/x-tex tex application/x-texinfo texinfo texi application/x-troff t tr roff application/x-troff-man man application/zip zip audio/mpeg mpga mp2 mp3 audio/x-aiff aif aiff aifc audio/x-wav wav image/gif gif image/ief ief image/jpeg jpeg jpg jpe image/png png image/tiff tiff tif text/plain asc txt text/rtf rtf text/sgml sgml sgm text/xml xml video/mpeg mpeg mpg mpe video/x-msvideo avi text/html html htm

If the file can be found or has the wrong format, Sylpheed will assume the default MIME type for all the attachments: application/octet-stream. In such a case, the recipients mail client may not know what application to use to view the attachment. How Sylpheed handles attachments (reception)

When opening an attachment (select the attachment, right click and select Open) Sylpheed uses one of the following methods to determine the application to launch: The attachment is an image: the application is the one defined by the mime_image_viewer variable of the common preferences configuration file ($HOME/.sylpheed/sylpheedrc). If no application is defined, or if the format of the definition is not valid, the default application command is display (ImageMagick viewer). The attachment is a sound file: the application is the one defined by the mime_audio_player variable of the common preferences configuration file ($HOME/.sylpheed/sylpheedrc). If no application is defined, or if the format of the definition is not valid, the default application command is play. The attachment is a HTML file: the application is the one defined by the uri_cmd variable of the common preferences configuration file ($HOME/.sylpheed/sylpheedrc). This can also be changed in the Common preferences, by changing the Web browser defined in the Other tab. Any other attachment type: Sylpheed relies on metamail to use the correct application (Sylpheed starts metamail giving it the attachment file and the MIME type taken from the mail).

The binding of the applications to each MIME type is defined in the mailcap file. The systeme wide file is /etc/mailcap, while the user file is $HOME/.mailcap.

In the mailcap file, there is one definition per line, big lines can be broken by escaping the newline with a \ character, the first element of the line is the MIME type, then a semi-colon, (;), and finally the application to launch. The application part (right side of the semi-colon) can contain several shell commands separated by an escaped semi-colon (\;) and the %s string is replaced by the name of the file when launching the command.

Following is a typical mailcap file (an extract of mine): image/*; ee %s video/mpeg; gtv %s video/*; xanim %s application/pdf; xpdf %s text/html; dillo %s