SwiftHTML & CSSSolidityDesenvolvimento de JogosSolana/Rust
15.03.2025

Enviando E-mails em HTML com Python: Métodos e Bibliotecas

Visão Geral

Se você deseja enviar um e-mail em HTML usando Python, precisará utilizar a biblioteca smtplib para estabelecer uma conexão SMTP e o módulo email.mime para criar a mensagem em HTML.

Aqui está um exemplo de código:

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

# Defina as configurações do servidor SMTP (localhost será seu melhor amigo)
smtp_server, porta = "smtp.seuservidor.com", 587
usuario, senha = "seu_usuario", "sua_senha"  # Lembre-se de manter a segurança em mente

# Componha o conteúdo do e-mail
mensagem = MIMEMultipart("alternative")
mensagem["Subject"], mensagem["From"], mensagem["To"] = "Teste de E-mail HTML", usuario, "destinatario@exemplo.com"
html = """\
<html>
  <body>
    <p>Olá, não perca <a href="http://www.realpython.com">Real Python</a>.</p>
  </body>
</html>
"""
mensagem.attach(MIMEText(html, "html"))  # Escreva seu código HTML aqui

# Processo de envio
try:
    with smtplib.SMTP(smtp_server, porta) as servidor:
        servidor.starttls()  # Use TLS para segurança
        servidor.login(usuario, senha)  # Autentica
        servidor.send_message(mensagem)  # Envia o e-mail
    print("E-mail enviado com sucesso")
except Exception as e:
    print(f"Erro ao enviar o e-mail: {e}")

É importante usar uma conexão segura (TLS), tratar exceções e nunca armazenar informações sensíveis diretamente no código.

Trabalhando com Conteúdo HTML

Componha duas versões do e-mail: uma em formato HTML e uma versão em texto para aqueles que não conseguem visualizar HTML.

versao_texto = "Olá, confira Real Python: http://www.realpython.com"
mensagem.attach(MIMEText(versao_texto, "plain"))

Configurando Corretamente os Cabeçalhos do E-mail

Defina os cabeçalhos do e-mail para que os clientes de e-mail possam processá-lo facilmente:

mensagem.add_header('Content-Type', 'text/html')

Anexando Arquivos e Entrega via SMTP

Para adicionar um anexo ao e-mail, faça o seguinte:

from email.mime.application import MIMEApplication

anexo = MIMEApplication(open('arquivo.pdf', 'rb').read())
anexo.add_header('Content-Disposition', 'attachment', filename='arquivo.pdf')
mensagem.attach(anexo)

Certifique-se de verificar suas configurações SMTP e escapar caracteres específicos do HTML.

Gerenciando Corretamente as Transações SMTP

Para uma entrega confiável de e-mails, é importante abrir e fechar corretamente a conexão SMTP:

with smtplib.SMTP(host, porta) as servidor:
    servidor.starttls()
    servidor.login(usuario, senha)
    try:
        servidor.send_message(mensagem)
    finally:
        servidor.quit()

Certifique-se de tratar erros e informar os usuários sobre quaisquer problemas de entrega.

Visualização

Enviar e-mails com Python pode ser tão fácil e agradável quanto administrar uma galeria:

def enviar_convite(endereco_destinatario):
    convite_galeria = MIMEMultipart()
    convite_galeria['Subject'] = "Você está convidado!"
    conteudo_html = "<h1>Bem-vindo à Galeria de E-mails HTML!</h1>"
    convite_galeria.attach(MIMEText(conteudo_html, 'html'))

    with smtplib.SMTP('smtp.galeriaarte.com', 587) as servidor:
        servidor.sendmail("curador@galeriaarte.com", endereco_destinatario, convite_galeria.as_string())

# E voilà, o convite é enviado!

Passos Adicionais

Mantenha as seguintes considerações em mente ao enviar e-mails em HTML:

  • Verifique a compatibilidade do seu HTML/CSS com diferentes clientes de e-mail.
  • Evite ativar filtros de spam usando muitas imagens e links incorporados.
  • Use conexões e recursos com moderação.

Considere utilizar bibliotecas adicionais, como yagmail, para simplificar o processo.

Recursos Úteis

  1. Documentação Oficial do smtplib
  2. Referência de Tipos MIME (IANA Media Types)
  3. Exemplos de Trabalho com E-mail em Python
  4. Suporte a HTML e CSS em Clientes de E-mail
  5. Dicas para Enviar E-mails com Python no Real Python
  6. Guia para Enviar E-mails através do Gmail Usando Python
  7. Apresentação de Conjunto de Caracteres em Python

Did you like this article? Rate it from 1 to 5:

Thank you for voting!