"mailcap" --- Manejo de archivos Mailcap
****************************************

**Código fuente:** Lib/mailcap.py

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

Los archivos mailcap se utilizan para configurar la manera en las que
aplicaciones conscientes de formatos MIME como lectores de correo y
navegadores web reaccionan a archivos con diferentes tipos MIME. (El
nombre "mailcap" viene de la frase "mail capability".) Por ejemplo, un
archivo mailcap puede contener una linea como "video/mpeg; xmpeg %s".
Entonces, si el usuario encuentra un mensaje de correo o un documento
web con el tipo MIME *video/mpeg*, "%s"  será reemplazado por un
nombre de archivo (por lo general, uno que pertenezca a un archivo
temporal) y el programa **xmpeg** puede ser iniciado de manera
automática para visualizar el archivo.

El formato mailcap está documentado en **RFC 1524**, "A User Agent
Configuration Mechanism For Multimedia Mail Format Information", pero
no es un estándar de Internet. Sin embargo, los archivos mailcap
tienen soporte en la mayoría de los sistemas Unix.

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

   Retorna una tupla; el primer elemento es una cadena que contiene la
   línea de comando a ser ejecutada (la cual puede ser pasada a la
   función "os.system()"), y el segundo elemento es la entrada mailcap
   para el tipo MIME proporcionado. Si no se encuentra un tipo MIME
   que coincida, entonces se retornan los valores de "(None, None)".

   *key* es el nombre del campo deseado, que representa el tipo de
   actividad a realizar; el valor por defecto es 'view', ya que en el
   caso más común se quiere simplemente ver el cuerpo de los datos
   tecleados en MIME. Otros posibles valores podrían ser 'compose' y
   'edit', si se quisiera crear un nuevo cuerpo del tipo MIME dado o
   alterar los datos del cuerpo existente. Consulta **RFC 1524** para
   una lista completa de estos campos.

   *filename* es el nombre de fichero que debe ser sustituido por "%s"
   en la línea de comandos; el valor por defecto es "'/dev/null'" que
   casi seguro no es lo que quieres, así que normalmente lo anularás
   especificando un nombre de archivo.

   *plist* puede ser una lista que contenga parámetros con nombre; el
   valor por defecto es simplemente una lista vacía. Cada entrada de
   la lista debe ser una cadena que contenga el nombre del parámetro,
   un signo igual ("'='") y el valor del parámetro. Las entradas de
   mailcap pueden contener parámetros con nombre como "%{foo}", que
   serán reemplazados por el valor del parámetro llamado 'foo'. Por
   ejemplo, si la línea de comandos "showpartial %{id} %{number}
   %{total}" estaba en un archivo mailcap, y *plist* estaba
   establecido como "['id=1', 'number=2', 'total=3']", la línea de
   comandos resultante sería "'showpartial 1 2 3'".

   En un archivo mailcap, el campo "test" puede especificarse
   opcionalmente para probar alguna condición externa (como la
   arquitectura de la máquina, o el sistema de ventanas en uso) para
   determinar si se aplica o no la línea mailcap. La función
   "findmatch()" comprobará automáticamente dichas condiciones y
   omitirá la entrada si la comprobación falla.

   Distinto en la versión 3.8.16: 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()

   Retorna un diccionario que mapea los tipos de MIME a una lista de
   entradas de archivos mailcap. Este diccionario debe ser pasado a la
   función "findmatch()". Una entrada se almacena como una lista de
   diccionarios, pero no debería ser necesario conocer los detalles de
   esta representación.

   La información se deriva de todos los archivos mailcap que se
   encuentran en el sistema. Los ajustes en el archivo mailcap del
   usuario "$HOME/.mailcap" anularán los ajustes en los archivos
   mailcap del sistema "/etc/mailcap", "/usr/etc/mailcap", y
   "/usr/local/etc/mailcap".

Un ejemplo de uso:

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