"email.mime": Criando e-mail e objetos MIME fo zero
***************************************************

**Código-fonte:** Lib/email/mime/

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

Este módulo faz parte da API de e-mail legada ("Compat32"). Sua
funcionalidade é parcialmente substituída por "contentmanager" na nova
API, mas em certos aplicativos essas classes ainda podem ser úteis,
mesmo em código não legado.

Normalmente, você obtém uma estrutura de objeto de mensagem passando
um arquivo ou algum texto para um analisador sintático, que analisa o
texto e retorna o objeto de mensagem raiz. No entanto, você também
pode criar uma estrutura de mensagem completa do zero, ou até objetos
individuais de "Message" manualmente. De fato, você também pode pegar
uma estrutura existente e adicionar novos objetos "Message", movê-los,
etc. Isso cria uma interface muito conveniente para fatiar e cortar
dados de mensagens MIME.

Você pode criar uma nova estrutura de objeto criando instâncias de
"Message", adicionando anexos e todos os cabeçalhos apropriados
manualmente. Porém, para mensagens MIME, o pacote "email" fornece
algumas subclasses convenientes para facilitar as coisas.

Arquivo estão as classes:

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

   Módulo: "email.mime.base"

   Esta é a classe base para todas as subclasses específicas de MIME
   de "Message". Normalmente você não criará instâncias
   especificamente de "MIMEBase", embora possa. A "MIMEBase" é
   fornecida principalmente como uma classe base conveniente para
   subclasses mais específicas para MIME.

   *_maintype* é o tipo principal de *Content-Type* (ex., *text* ou
   *image*) e *_subtype* é o tipo principal de *Content-Type* (ex.,
   *plain* ou *gif*). *_params* é um dicionário de parâmetros
   chave/valor e é passado diretamente para "Message.add_header".

   Se *policy* for especificado, (o padrão é a política "compat32")
   será passado para "Message".

   A classe "MIMEBase" sempre adiciona um cabeçalho *Content-Type*
   (com base em *_maintype*, *_subtype* e *_params*) e um cabeçalho
   *MIME-Version* (sempre definido como "1.0").

   Alterado na versão 3.6: Adicionado o parâmetro somente-nomeado
   *policy*.

class email.mime.nonmultipart.MIMENonMultipart

   Módulo: "email.mime.nonmultipart"

   Uma subclasse de "MIMEBase", esta é uma classe base intermediária
   para mensagens MIME que não são *multipart*. O principal objetivo
   desta classe é impedir o uso do método "attach()", que só faz
   sentido para mensagens *multipart*. Se "attach()" for chamado, uma
   exceção "MultipartConversionError" será levantada.

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

   Módulo: "email.mime.multipart"

   Uma subclasse de "MIMEBase", esta é uma classe base intermediária
   para mensagens MIME que são *multipart*. O *_subtype* opcional é
   padronizado como *mixed*, mas pode ser usado para especificar o
   subtipo da mensagem. Um cabeçalho *Content-Type* de
   *multipart/_subtype* será adicionado ao objeto da mensagem. Um
   cabeçalho *MIME-Version* também será adicionado.

   O *boundary* opcional é a string de limites de várias partes.
   Quando "None" (o padrão), o limite é calculado quando necessário
   (por exemplo, quando a mensagem é serializada).

   *_subparts* é uma sequência de subpartes iniciais para a carga.
   Deve ser possível converter essa sequência em uma lista. Você
   sempre pode anexar novas subpartes à mensagem usando o método
   "Message.attach".

   O argumento opcional *policy* tem como padrão "compat32".

   Parâmetros adicionais para o cabeçalho *Content-Type* são retirados
   dos argumentos nomeados ou passados para o argumento *_params*, que
   é um dicionário.

   Alterado na versão 3.6: Adicionado o parâmetro somente-nomeado
   *policy*.

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

   Módulo: "email.mime.application"

   Uma subclasse de "MIMENonMultipart", a classe "MIMEApplication" é
   usada para representar objetos de mensagem MIME do tipo principal
   *application*. *_data* contém os bytes para os dados brutos da
   aplicação. O *_subtype* opcional especifica o subtipo MIME e o
   padrão é *octet-stream*.

   O *_encoder* opcional é um chamável (isto é, função) que executará
   a codificação real dos dados para transporte. Esse chamável requer
   um argumento, que é a instância "MIMEApplication". Ele deve usar
   "get_payload()" e "set_payload()" para alterar a carga útil para o
   formulário codificado. Também deve adicionar *Content-Transfer-
   Encoding* ou outros cabeçalhos ao objeto de mensagem, conforme
   necessário. A codificação padrão é base64. Veja o módulo
   "email.encoders" para obter uma lista dos codificadores embutidos.

   O argumento opcional *policy* tem como padrão "compat32".

   *_params* são passados diretamente para o construtor da classe
   base.

   Alterado na versão 3.6: Adicionado o parâmetro somente-nomeado
   *policy*.

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

   Módulo: "email.mime.audio"

   Uma subclasse de "MIMENonMultipart", a classe "MIMEAudio" é usada
   para criar objetos de mensagem MIME do tipo principal *audio*.
   *_audiodata* contpem os bytes para os dados brutos de áudio. Se
   esses dados puderem ser decodificados como au, wav, aiff ou aifc,
   então o subtipo será automaticamente incluído no cabeçalho
   *Content-Type*. Caso contrário, você pode especificar
   explicitamente o subtipo de áudio por meio do argumento *_subtype*.
   Se o tipo menor não pôde ser adivinhado e *_subtype* não foi
   fornecido, então um exceção "TypeError" é levantada.

   O *_encoder* opcional é um chamável (ou seja, função) que executará
   a codificação real dos dados de áudio para transporte. Esse
   chamável requer um argumento, que é a instância "MIMEAudio". Ele
   deve usar "get_payload()" e "set_payload()" para alterar a carga
   útil para a forma codificada. Também deve adicionar *Content-
   Transfer-Encoding* ou outros cabeçalhos ao objeto de mensagem,
   conforme necessário. A codificação padrão é base64. Veja o módulo
   "email.encoders" para obter uma lista dos codificadores embutidos.

   O argumento opcional *policy* tem como padrão "compat32".

   *_params* são passados diretamente para o construtor da classe
   base.

   Alterado na versão 3.6: Adicionado o parâmetro somente-nomeado
   *policy*.

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

   Módulo: "email.mime.image"

   Uma subclasse de "MIMENonMultipart", a classe "MIMEImage" é usada
   para criar objetos de mensagem MIME do tipo principal *image*.
   *_imagedata* contém os bytes para os dados de imagem bruta. Se esse
   tipo de dados puder ser detectado (jpeg, png, gif, tiff, rgb, pbm,
   pgm, ppm, rast, xbm, bmp, webp e exr tentados), então o subtipo
   será automaticamente incluído no cabeçalho *Content-Type*. Caso
   contrário, você pode especificar explicitamente o subtipo de imagem
   por meio do argumento *_subtype*. Se o tipo secundário não puder
   ser adivinhado e *_subtype* não for fornecido, então "TypeError"
   será levantada.

   O *_encoder* opcional é um chamável (ou seja, função) que executará
   a codificação real dos dados de imagem para transporte. Esse
   chamável requer um argumento, que é a instância "MIMEImage". Ele
   deve usar "get_payload()" e "set_payload()" para alterar a carga
   útil para a forma codificada. Também deve adicionar *Content-
   Transfer-Encoding* ou outros cabeçalhos ao objeto de mensagem,
   conforme necessário. A codificação padrão é base64. Veja o módulo
   "email.encoders" para obter uma lista dos codificadores embutidos.

   O argumento opcional *policy* tem como padrão "compat32".

   *_params* são passados diretamente para o construtor "MIMEBase".

   Alterado na versão 3.6: Adicionado o parâmetro somente-nomeado
   *policy*.

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

   Módulo: "email.mime.message"

   Uma subclasse de "MIMENonMultipart", a classe "MIMEMessage" é usada
   para criar objetos MIME do tipo principal *message*. *_msg* é usado
   como carga útil e deve ser uma instância da classe "Message" (ou
   uma subclasse dela), caso contrário, uma "TypeError" é levantada.

   O opcional *_subtype* define o subtipo da mensagem; o padrão é
   *rfc822*.

   O argumento opcional *policy* tem como padrão "compat32".

   Alterado na versão 3.6: Adicionado o parâmetro somente-nomeado
   *policy*.

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

   Módulo: "email.mime.text"

   Uma subclasse de "MIMENonMultipart", a classe "MIMEText" é usada
   para criar objetos MIME do tipo principal *text*. *_text* é a
   string para a carga útil. *_subtype* é o tipo secundário e o padrão
   é *plain*. *_charset* é o conjunto de caracteres do texto e é
   passado como um argumento para o construtor "MIMENonMultipart"; o
   padrão é "us-ascii" se a string contiver apenas pontos de código
   "ascii" e "utf-8" caso contrário. O parâmetro *_charset* aceita uma
   string ou uma instância "Charset".

   A menos que o argumento *_charset* seja explicitamente definido
   como "None", o objeto MIMEText criado terá um cabeçalho *Content-
   Type* com um parâmetro "charset" e um cabeçalho *Content-Transfer-
   Encoding*. Isso significa que uma chamada "set_payload" subsequente
   não resultará em uma carga útil codificada, mesmo se um charset for
   passado no comando "set_payload". Você pode "redefinir" esse
   comportamento excluindo o cabeçalho "Content-Transfer-Encoding",
   após o qual uma chamada "set_payload" codificará automaticamente a
   nova carga útil (e adicionará um novo cabeçalho *Content-Transfer-
   Encoding*).

   O argumento opcional *policy* tem como padrão "compat32".

   Alterado na versão 3.5: *_charset* também aceita instâncias de
   "Charset".

   Alterado na versão 3.6: Adicionado o parâmetro somente-nomeado
   *policy*.
