Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> python

Enviando E-mail em Python com SMTP: Guia Rápido

O protocolo SMTP (Simple Mail Transfer Protocol) gerencia o envio e roteamento de e-mails entre servidores. Python fornece o módulo smtplib para criar sessões de cliente SMTP.

Criando Objeto SMTP

import smtplib
smtp_obj = smtplib.SMTP([host[, porta[, hostname_local]]])

Método sendmail

Envia a mensagem. Parâmetros:

Exemplo Básico (Texto Simples)

#!/usr/bin/python
import smtplib

remetente = 'de@dominio.com'
destinatarios = ['para@dominio.com']
mensagem = """From: Remetente 
To: Destinatário 
Subject: Teste SMTP

Esta é uma mensagem de teste.
"""

try:
    smtp_obj = smtplib.SMTP('localhost')
    smtp_obj.sendmail(remetente, destinatarios, mensagem)
    print("E-mail enviado com sucesso")
except smtplib.SMTPException:
    print("Erro: não foi possível enviar o e-mail")

Se não houver servidor SMTP local, use um remoto:

smtplib.SMTP('mail.seu-dominio.com', 25)

Enviando E-mail em HTML

Defina cabeçalhos MIME-Version e Content-type: text/html:

mensagem = """From: Remetente 
To: Destinatário 
MIME-Version: 1.0
Content-type: text/html
Subject: Teste HTML

<b>Isto é HTML</b>
<h1>Título</h1>
"""

Enviando Anexos

Use Content-Type: multipart/mixed com boundaries. Arquivos devem ser codificados em base64 (base64.b64encode).

#!/usr/bin/python
import smtplib, base64

arquivo = "/tmp/teste.txt"
with open(arquivo, "rb") as f:
    conteudo = f.read()
codificado = base64.b64encode(conteudo).decode()

remetente = 'webmaster@exemplo.com'
destinatario = 'usuario@gmail.com'
marcador = "MARCADOR_UNICO"

parte1 = f"""From: Remetente 
To: Destinatário <{destinatario}>
Subject: Enviando Anexo
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary={marcador}
--{marcador}
"""

parte2 = f"""Content-Type: text/plain
Content-Transfer-Encoding: 8bit

Corpo da mensagem.
--{marcador}
"""

parte3 = f"""Content-Type: application/octet-stream; name="{arquivo}"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="{arquivo}"

{codificado}
--{marcador}--
"""

mensagem = parte1 + parte2 + parte3

try:
    smtp_obj = smtplib.SMTP('localhost')
    smtp_obj.sendmail(remetente, destinatario, mensagem)
    print("E-mail com anexo enviado")
except Exception as e:
    print("Erro:", e)

Dica: Para produção, prefira a biblioteca email (ex.: email.mime.multipart.MIMEMultipart) que monta mensagens MIME corretamente.

python

  1. Dominando Tipos de Dados em Python: Guia Prático
  2. Dominando Operadores em Python: Guia Completo
  3. Dominando a Declaração Pass em Python: Guia Prático
  4. Dominando Argumentos de Funções em Python: Parâmetros Posicionais, Nomeados e Padrão
  5. Dominando Dicionários em Python: Criação, Manipulação e Técnicas Avançadas
  6. Dominando Tratamento de Exceções em Python: try, except, else e finally Explicados
  7. Sensor de Temperatura Infravermelho TMP006 com Raspberry Pi: Biblioteca Python e Guia de Configuração
  8. Construa um Sensor de Temperatura Remoto com Raspberry Pi e Python – Guia Passo a Passo
  9. Calculando Médias em Python: Guia Prático
  10. Troque Duas Variáveis Python Sem Variável Temporária – Sem Esforço