"mailcap" — Manipulation de fichiers Mailcap
********************************************

**Code source :** Lib/mailcap.py

Deprecated since version 3.11, will be removed in version 3.13: The
"mailcap" module is deprecated (see **PEP 594** for details). The
"mimetypes" module provides an alternative.

======================================================================

Mailcap files are used to configure how MIME-aware applications such
as mail readers and web browsers react to files with different MIME
types. (The name "mailcap" is derived from the phrase "mail
capability".)  For example, a mailcap file might contain a line like
"video/mpeg; xmpeg %s".  Then, if the user encounters an email message
or web document with the MIME type *video/mpeg*, "%s" will be replaced
by a filename (usually one belonging to a temporary file) and the
**xmpeg** program can be automatically started to view the file.

The mailcap format is documented in **RFC 1524**, "A User Agent
Configuration Mechanism For Multimedia Mail Format Information", but
is not an internet standard.  However, mailcap files are supported on
most Unix systems.

mailcap.findmatch(caps, MIMEtype, key='view', filename='/dev/null', plist=[])

   Renvoie une paire ; le premier élément est une chaîne de caractères
   (string) contenant la ligne de commande à exécuter (qui peut être
   passée à "os.system()"), et le second élément est l’entrée
   *mailcap* pour un type de MIME donné. Si le type MIME n’est pas
   identifié, "(None, None)" est renvoyé.

   *key* est le nom de champ souhaité, qui représente le type d’action
   à exécuter ; la valeur par défaut est "'view'", puisque dans la
   majorité des cas le besoin consiste juste à lire le corps (body) de
   la donnée de type MIME. Les autres valeurs possibles peuvent être
   "'compose'" et "'edit'", si le besoin consiste à créer un nouveau
   corps de données (body) ou modifier celui existant. Voir la **RFC
   1524** pour une liste complète des champs.

   *filename* est le nom de fichier à remplacer pour "%s" en ligne de
   commande ; la valeur par défaut est "’/dev/null’" qui n’est
   certainement pas celle que vous attendez. Donc la plupart du temps,
   le nom de fichier doit être indiqué.

   *plist* peut être une liste contenant des noms de paramètres ; la
   valeur par défaut est une simple liste vide. Chaque entrée dans la
   liste doit être une chaîne de caractères contenant le nom du
   paramètre, un signe égal ("’=‘"), ainsi que la valeur du paramètre.
   Les entrées *mailcap* peuvent contenir des noms de paramètres tels
   que "%{foo}", remplacé par la valeur du paramètre nommé *foo*. Par
   exemple, si la ligne de commande "showpartial %{id} %{number}
   %{total}" est un fichier *mailcap*, et *plist*  configuré à
   "[‘id=1’, ‘number=2’, ‘total=3’]", la ligne de commande qui en
   résulte est "’showpartial 1 2 3’".

   Dans un fichier *mailcap*, le champ « test » peut être renseigné de
   façon optionnelle afin de tester certaines conditions externes
   (comme l’architecture machine, ou le gestionnaire de fenêtre
   utilisé) afin de déterminer si la ligne *mailcap* est pertinente ou
   non. "findmatch()" vérifie automatiquement ces conditions et ignore
   l’entrée si la vérification échoue.

   Modifié dans la version 3.11: To prevent security issues with shell
   metacharacters (symbols that have special effects in a shell
   command line), "findmatch" will refuse to inject ASCII characters
   other than alphanumerics and "@+=:,./-_" into the returned command
   line.If a disallowed character appears in *filename*, "findmatch"
   will always return "(None, None)" as if no entry was found. If such
   a character appears elsewhere (a value in *plist* or in
   *MIMEtype*), "findmatch" will ignore all mailcap entries which use
   that value. A "warning" will be raised in either case.

mailcap.getcaps()

   Renvoie un dictionnaire qui associe les types MIME à une liste
   d’entrées de fichier *mailcap*. Ce dictionnaire doit être transmis
   à la fonction "findmatch()". Une entrée est enregistrée en tant
   qu’une liste de dictionnaires, mais il n’est pas nécessaire de
   connaitre les détails de cette représentation.

   L’information provient de tous les fichiers *mailcap* trouvés dans
   le système. Les configurations réalisées dans le fichier *mailcap*
   du répertoire utilisateur "$HOME/.mailcap" outrepasse les
   configurations systèmes des fichiers *mailcap* "/etc/mailcap",
   "/usr/etc/mailcap", et "/usr/local/etc/mailcap".

Un exemple d’utilisation :

   >>> import mailcap
   >>> d = mailcap.getcaps()
   >>> mailcap.findmatch(d, 'video/mpeg', filename='tmp1223')
   ('xmpeg tmp1223', {'view': 'xmpeg %s'})
