# `email.mime`: Creación de correo electrónico y objetos MIME desde cero

Código fuente: Lib/email/mime/

Este módulo forma parte de la API heredada de correo electrónico (`Compat32`). Su funcionalidad se sustituye parcialmente por el `contentmanager` en la nueva API, pero en ciertas aplicaciones estas clases pueden seguir siendo útiles, incluso en código no heredado.

Normalmente, se obtiene una estructura de objeto de mensaje pasando un archivo o algún texto a un analizador, que analiza el texto y retorna el objeto de mensaje principal. Sin embargo, también puede crear una estructura de mensajes completa desde cero, o incluso objetos individuales `Message` a mano. De hecho, también puede tomar una estructura existente y agregar nuevos objetos `Message`, moverlos, etc. Esto compone una interfaz muy conveniente para cortar y gestionar mensajes MIME.

Puede crear una nueva estructura de objeto mediante la creación de una instancia de `Message`, añadiendo accesorios y todos los encabezados necesarios manualmente. Para mensajes MIME sin embargo, el paquete `email` proporciona subclases convenientes para facilitar las cosas.

Descripción de las clases:

class `email.mime.base.``MIMEBase`(_maintype, _subtype, *, policy=compat32, **_params)

  Módulo: `email.mime.base`

  Esta es la clase básica para todas las subclases específicas `Message` para MIME. Normalmente no creará instancias específicas de la `MIMEBase`, aunque es posible. La `MIMEBase` se proporciona principalmente como una clase básica conveniente para subclases más específicas, apropiadas para MIME.

  _maintype es el tipo principal Content-Type (por ejemplo text o image), y _subtype es el tipo menor Content-Type (por ejemplo plain o gif). _params es un diccionario de parámetro clave/valor y se pasa directamente a `Message.add_header`.

  Si se especifica policy, (por defecto, la directiva `compat32`) se pasará a `Message`.

  La clase `MIMEBase` siempre agrega un encabezado Content-Type (basado en _maintype, _subtype y _params), y un encabezado MIME-Versión (siempre establecido en `1.0`).

  Distinto en la versión 3.6: Se ha añadido el parámetro policy de solo palabra clave.

class `email.mime.nonmultipart.``MIMENonMultipart`

  Módulo: `email.mime.nonmultipart`

  Una subclase de `MIMEBase`, es una clase base intermedia para los mensajes MIME que no son multipart. El propósito principal de esta clase es evitar el uso del método `attach()`, que solo tiene sentido para los mensajes multipart. Si se llama a `attach()`, se lanza una excepción `MultipartConversionError`.

class `email.mime.multipart.``MIMEMultipart`(_subtype='mixed', boundary=None, _subparts=None, *, policy=compat32, **_params)

  Módulo: `email.mime.multipart`

  Una subclase de `MIMEBase`, se trata de una clase base intermedia para los mensajes MIME que son multipart. El valor predeterminado opcional de _subtype es mixed, pero se puede utilizar para especificar el subtipo del mensaje. Se agregará un encabezado Content-Type de multipart/_subtype al objeto del mensaje. También se agregará un encabezado MIME-Version.

  El boundary opcional es la cadena de límite multiparte. Cuando `None` (valor predeterminado), el límite se calcula cuando es necesario (por ejemplo, cuando se serializa el mensaje).

  _subparts es una secuencia de subpartes iniciales para la carga útil. Debe ser posible convertir esta secuencia en una lista. Siempre puede adjuntar nuevas subpartes al mensaje mediante el método `Message.attach`.

  El valor predeterminado del argumento policy opcional es `compat32`.

  Los parámetros adicionales para el encabezado Content-Type se toman de los argumentos de palabra clave, o se pasan al argumento _params, que es un diccionario de palabras clave.

  Distinto en la versión 3.6: Se ha añadido el parámetro policy de solo palabra clave.

class `email.mime.application.``MIMEApplication`(_data, _subtype='octet-stream', _encoder=email.encoders.encode_base64, *, policy=compat32, **_params)

  Módulo: `email.mime.application`

  Una subclase de `MIMENonMultipart`, la clase `MIMEApplication` se utiliza para representar objetos de mensaje MIME de tipo principal application. _data es una cadena de caracteres que contiene los datos de bytes sin procesar. _subtype opcional especifica el subtipo MIME y el valor predeterminado es octet-stream.

  _encoder opcional es una recurso invocable (es decir, una función) que realizará la codificación real de los datos para el transporte. Este invocable toma un argumento, que es la instancia `MIMEApplication`. Debe utilizar `get_payload()` y `set_payload()` para cambiar la carga útil a la forma codificada. También debe agregar cualquier Content-Transfer-Encoding u otros encabezados al objeto del mensaje según sea necesario. La codificación predeterminada es base64. Consulte el módulo `email.encoders` para obtener una lista de los codificadores integrados.

  El valor predeterminado del argumento policy opcional es `compat32`.

  _params se pasan directamente al constructor de la clase base.

  Distinto en la versión 3.6: Se ha añadido el parámetro policy de solo palabra clave.

class `email.mime.audio.``MIMEAudio`(_audiodata, _subtype=None, _encoder=email.encoders.encode_base64, *, policy=compat32, **_params)

  Módulo: `email.mime.audio`

  Una subclase de `MIMENonMultipart`, la clase `MIMEAudio` se utiliza para crear objetos de mensaje MIME de tipo principal audio. _audiodata es una cadena de caracteres que contiene los datos de audio sin procesar. Si estos datos pueden ser decodificados por el módulo estándar de Python `sndhdr`, entonces el subtipo se incluirá automáticamente en el encabezado Content-Type. De lo contrario, puede especificar explícitamente el subtipo de audio mediante el argumento _subtype. Si no se pudo adivinar el tipo secundario y no se ha proporcionado _subtype, se lanza `TypeError`.

  _encoder opcional es un recurso invocable (es decir, una función) que realizará la codificación real de los datos de audio para el transporte. Este invocable toma un argumento, que es la instancia `MIMEAudio`. Debe utilizar `get_payload()` y `set_payload()` para cambiar la carga útil a la forma codificada. También debe agregar cualquier Content-Transfer-Encoding u otros encabezados al objeto del mensaje según sea necesario. La codificación predeterminada es base64. Consulte el módulo `email.encoders` para obtener una lista de los codificadores integrados.

  El valor predeterminado del argumento policy opcional es `compat32`.

  _params se pasan directamente al constructor de la clase base.

  Distinto en la versión 3.6: Se ha añadido el parámetro policy de solo palabra clave.

class `email.mime.image.``MIMEImage`(_imagedata, _subtype=None, _encoder=email.encoders.encode_base64, *, policy=compat32, **_params)

  Módulo: `email.mime.image`

  Una subclase de `MIMENonMultipart`, la clase `MIMEImage` se utiliza para crear objetos de mensaje MIME de tipo principal image. _imagedata es una cadena de caracteres que contiene los datos de imagen sin procesar. Si estos datos pueden ser decodificados por el módulo estándar de Python `imghdr`, entonces el subtipo se incluirá automáticamente en el encabezado Content-Type. De lo contrario, puede especificar explícitamente el subtipo de imagen mediante el argumento _subtype. Si no se pudo adivinar el tipo secundario y no se ha proporcionado _subtype, se lanza `TypeError`.

  _encoder opcional es un recurso invocable (es decir, una función) que realizará la codificación real de los datos de imagen para el transporte. Este invocable toma un argumento, que es la instancia `MIMEImage`. Debe utilizar `get_payload()` y `set_payload()` para cambiar la carga útil a la forma codificada. También debe agregar cualquier Content-Transfer-Encoding u otros encabezados al objeto del mensaje según sea necesario. La codificación predeterminada es base64. Consulte el módulo `email.encoders` para obtener una lista de los codificadores integrados.

  El valor predeterminado del argumento policy opcional es `compat32`.

  _params se pasan directamente al constructor `MIMEBase`.

  Distinto en la versión 3.6: Se ha añadido el parámetro policy de solo palabra clave.

class `email.mime.message.``MIMEMessage`(_msg, _subtype='rfc822', *, policy=compat32)

  Módulo: `email.mime.message`

  Una subclase de `MIMENonMultipart`, la clase `MIMEMessage` se utiliza para crear objetos MIME de tipo principal message. _msg se utiliza como la carga y debe ser una instancia de la clase `Message` (o una subclase de la misma), de lo contrario se lanza un `TypeError`.

  _subtype opcional establece el subtipo del mensaje; por defecto es rfc822.

  El valor predeterminado del argumento policy opcional es `compat32`.

  Distinto en la versión 3.6: Se ha añadido el parámetro policy de solo palabra clave.

class `email.mime.text.``MIMEText`(_text, _subtype='plain', _charset=None, *, policy=compat32)

  Módulo: `email.mime.text`

  Una subclase de `MIMENonMultipart`, la clase `MIMEText` se utiliza para crear objetos MIME de tipo principal text. _text es la cadena de caracteres de la carga útil. _subtype es el tipo menor y el valor predeterminado es plain. _charset es el paquete de caracteres del texto y se pasa como argumento al constructor `MIMENonMultipart`; el valor predeterminado es `us-ascii` si la cadena contiene sólo puntos de código `ascii`, y `utf-8` en caso contrario. El parámetro _charset acepta una cadena o una instancia `Charset`.

  A menos que el argumento _charset se establezca explícitamente como `None`, el objeto MIMEText creado tendrá a la vez un encabezado Content-Type con un parámetro `charset`, y un encabezado Content-Transfer-Encoding. Esto significa que una llamada posterior a `set_payload` no dará lugar a una carga codificada, incluso si se pasa un conjunto de caracteres en el comando `set_payload`. Puede «restablecer» este comportamiento eliminando el encabezado `Content-Transfer-Encoding`, después de lo cual una llamada a `set_payload` codificará automáticamente la nueva carga útil (y agregará un nuevo encabezado Content-Transfer-Encoding).

  El valor predeterminado del argumento policy opcional es `compat32`.

  Distinto en la versión 3.5: _charset también acepta instancias `Charset`.

  Distinto en la versión 3.6: Se ha añadido el parámetro policy de solo palabra clave.