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

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

Obsoleto desde la versión 3.11, se eliminará en la versión 3.13: El
módulo "mailcap" está obsoleto (ver **PEP 594** para más detalles). El
módulo "mimetypes" proporciona una alternativa.

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

Los archivos Mailcap se utilizan para configurar cómo las aplicaciones
compatibles con MIME, como los lectores de correo y los navegadores
web, reaccionan a los archivos con diferentes tipos de MIME. (El
nombre "mailcap" se deriva de la frase "capacidad de correo"). Por
ejemplo, un archivo mailcap puede contener una línea como "video/mpeg;
xmpeg %s". Luego, si el usuario encuentra un mensaje de correo
electrónico o documento web con el tipo MIME: mimetype: *video /
mpeg*, "%s" será reemplazado por un nombre de archivo (generalmente
uno que pertenezca a un archivo temporal) y el programa **xmpeg** se
puede iniciar automáticamente para ver el archivo.

El formato mailcap está documentado en **RFC 1524**, "Un mecanismo de
configuración de agente de usuario para información de formato de
correo multimedia", pero no es un estándar de Internet. Sin embargo,
los archivos mailcap son compatibles con 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.11: Para evitar problemas de seguridad con
   los metacaracteres de shell (símbolos que tienen efectos especiales
   en una línea de comando de shell), "findmatch" se negará a inyectar
   caracteres ASCII que no sean alfanuméricos y "@+=:,./-_" en la
   línea de comando retornada.Si aparece un carácter no permitido en
   *filename*, "findmatch" siempre retornará "(None, None)" como si no
   se hubiera encontrado ninguna entrada. Si dicho carácter aparece en
   otro lugar (un valor en *plist* o en *MIMEtype*), "findmatch"
   ignorará todas las entradas mailcap que utilicen ese valor. Se
   generará un "warning" en cualquier caso.

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'})
