Como automatizar emails com Python

Atualizado em: 10/03/2026
Tempo de leitura: 7 minutos
Python e ícone de e-mail sobre teclado de notebook

Automatizar e-mails significa enviar mensagens sem fazer tudo manualmente. Com Python você pode agendar relatórios, avisos e mensagens de boas-vindas. Neste artigo você vai aprender o passo a passo, ver exemplos práticos e entender quando usar cada técnica.

Por que automatizar e-mails?

Enviar e-mails manualmente toma tempo e aumenta o risco de erro. Ao automatizar, você:

  • Ganha tempo e consistência.
  • Envia mensagens personalizadas em grande escala.
  • Conecta relatórios, formulários e sistemas com e-mail.
  • Reduz tarefas repetitivas do dia a dia.

O que precisamos antes de começar

Antes de escrever o código, tenha em mente:

  • Uma conta de e-mail válida (Gmail, Outlook, ou um servidor da empresa).
  • Permissão para acesso SMTP se usar um serviço externo.
  • Bibliotecas Python instaladas. Exemplos: smtplib, email, yagmail, schedule.
  • Um ambiente para agendar tarefas, como cron no Linux ou um serviço em nuvem.

Se quiser automatizar tarefas mais amplas com Python veja também o nosso artigo sobre automatizando tarefas com Python em https://academify.com.br/automatizando-tarefas-com-python/. Para integrar e-mails com uma aplicação web, consulte o tutorial em Flask em https://academify.com.br/tutorial-em-flask/.

Como o envio de e-mails funciona, em termos simples

  1. Seu programa conecta-se a um servidor SMTP.
  2. Ele se autentica com usuário e senha ou token.
  3. Monta a mensagem: remetente, destinatário, assunto, corpo e anexos.
  4. Envia a mensagem através do servidor.
  5. Fecha a conexão.

SMTP é o protocolo que permite o envio de e-mails. Ele é o padrão usado por serviços como Gmail e Outlook.

Métodos comuns para enviar e-mails com Python

1. Usando smtplib e email (bibliotecas padrão)

São bibliotecas nativas do Python. Permitem controle total e funcionam sem instalar nada extra.

Vantagens:

  • Controle completo.
  • Sem dependências externas.

Desvantagens:

  • Exige tratar detalhes de autenticação e anexos manualmente.
  • Pode ser mais verboso.

2. Usando yagmail ou bibliotecas de terceiros

yagmail simplifica envio pelo Gmail. Outras opções incluem emails e python-mailer.

Vantagens:

  • Código mais simples.
  • Facilita envio com HTML e anexos.

Desvantagens:

  • Dependência externa.
  • Pode precisar de configuração extra no provedor de e-mail.

3. APIs de e-mail (SendGrid, Mailgun, Amazon SES)

Esses serviços oferecem APIs HTTP para envio em massa e relatórios.

Vantagens:

  • Escalabilidade e métricas.
  • Reputação de envio melhor para grandes volumes.

Desvantagens:

  • Custo adicional.
  • Integração via HTTP em vez de SMTP.

Passo a passo: enviar um e-mail simples com smtplib

  1. Ative acesso no provedor (por exemplo, no Gmail ative “app passwords” ou “less secure apps” quando aplicável).
  2. Importe as bibliotecas.
  3. Crie a mensagem com email.message.EmailMessage.
  4. Conecte ao servidor SMTP com TLS ou SSL.
  5. Envie e feche.

Exemplo de código (sem mostrar saída):

Python
import smtplib
from email.message import EmailMessage

msg = EmailMessage()
msg['Subject'] = 'Relatório diário'
msg['From'] = '[email protected]'
msg['To'] = '[email protected]'
msg.set_content('Olá, segue o relatório diário em anexo.')

# Conexão com servidor SMTP usando TLS
with smtplib.SMTP('smtp.gmail.com', 587) as smtp:
    smtp.starttls()
    smtp.login('[email protected]', 'SUA_SENHA_OU_TOKEN')
    smtp.send_message(msg)

Lembre-se de usar senhas de aplicação ou tokens quando o provedor exigir. Nunca deixe senhas no código em produção. Use variáveis de ambiente ou um cofre de segredos.

Enviando e-mails com HTML e anexos

Para enviar HTML, defina o corpo HTML e uma versão em texto simples como fallback. Para anexos, leia o arquivo em binário e anexe com msg.add_attachment.

Automatizando o envio: agendamento

Há várias formas de agendar o envio:

  • schedule em Python para tarefas simples em um servidor que fica rodando.
  • cron no Linux para rodar scripts em horários definidos.
  • Serviços em nuvem (AWS Lambda, Google Cloud Functions) acionados por agendadores.
  • Ferramentas de CI/CD que executam scripts em horários ou gatilhos.

Exemplo rápido com schedule:

Python
import schedule
import time

def enviar_relatorio():
    # função que envia e-mail
    pass

schedule.every().day.at("08:00").do(enviar_relatorio)

while True:
    schedule.run_pending()
    time.sleep(60)

Boas práticas de automação de e-mail

  • Use variáveis de ambiente para senhas e tokens.
  • Logue ações: quando um envio falha, registre o erro.
  • Rate limit: evite enviar muitos e-mails de uma só vez; respeite limites do provedor.
  • Personalize: inclua nome e informações relevantes no corpo para aumentar engajamento.
  • Teste em ambiente de homologação antes de rodar em produção.
  • Gerencie bounces e opt-outs quando enviar em massa.

Exemplo do mundo real

Imagine uma loja que precisa avisar clientes sobre pedidos prontos. O sistema registra o pedido pronto no banco de dados. Um script em Python consulta novos pedidos a cada 5 minutos e envia um e-mail automático ao cliente com o status e um link de rastreamento.

Esse fluxo conecta o banco de dados, gera um e-mail personalizado e usa smtplib ou uma API para enviar a mensagem.

Integrações úteis

  • Gerar relatórios com pandas e anexo CSV.
  • Fazer requisições para APIs com requests.
  • Integrar com uma aplicação Flask para enviar e-mails a partir de formulários. Veja nosso tutorial em https://academify.com.br/tutorial-em-flask/ se quiser integrar e-mails em uma app web.

O que evitar

  • Não inclua credenciais em código fonte público.
  • Não envie spam. Respeite as leis e a política do provedor.
  • Não subestime limites de envio do servidor.

Perguntas Frequentes (FAQ)

1. O que é automatizar e-mails com Python?
Automatizar e-mails é usar scripts em Python para enviar mensagens sem intervenção manual.

2. Preciso saber muito de programação para começar?
Não. Conhecimentos básicos de Python e como instalar bibliotecas são suficientes.

3. Posso usar uma conta Gmail pessoal para enviar e-mails automáticos?
Sim, mas é melhor usar senhas de app ou tokens e checar limites do Gmail.

4. Como protejo minhas senhas no script?
Use variáveis de ambiente ou serviços de cofre de segredos.

5. Posso enviar anexos como PDF ou CSV?
Sim. Leia o arquivo em binário e anexe com a API email do Python.

6. Qual a diferença entre usar SMTP e uma API como SendGrid?
SMTP conecta-se ao servidor de e-mail. APIs oferecem métricas, escalabilidade e melhor entrega.

7. Como agendo e-mails para horários específicos?
Use cron, schedule no Python ou um serviço em nuvem com agendador.

8. O que fazer se muitos e-mails voltam como rejeitados?
Verifique regras de spam, reputação do domínio e bounces para descobrir a causa.

9. Preciso tratar respostas automáticas?
Depende. Para algumas aplicações, não é necessário; para atendimento, sim.

10. Posso enviar e-mails em massa com Python?
Sim, mas use provedores de envio em massa para evitar bloqueios e problemas de reputação.

Compartilhe:

Facebook
WhatsApp
Twitter
LinkedIn

Conteúdo do artigo

    Artigos relacionados

    Automação e Scripts
    Foto do Leandro Hirt

    Como acessar e editar Google Sheets com Python em minutos

    Integrar planilhas do Google com scripts automatizados é uma das habilidades mais valiosas para quem deseja otimizar processos de negócios

    Ler mais

    Tempo de leitura: 9 minutos
    06/03/2026
    Automação e Scripts
    Foto do Leandro Hirt

    Como extrair texto de PDFs com Python em minutos

    Você já se deparou com a necessidade de copiar informações de centenas de arquivos, mas percebeu que fazer isso manualmente

    Ler mais

    Tempo de leitura: 11 minutos
    02/03/2026
    Automação e Scripts
    Foto do Leandro Hirt

    Como criar um bot de WhatsApp com Python em minutos

    Você já pensou em como seria prático ter um atendente virtual respondendo seus clientes ou amigos 24 horas por dia?

    Ler mais

    Tempo de leitura: 10 minutos
    01/03/2026
    Automação e Scripts
    Foto do Leandro Hirt

    Como automatizar postagens no Twitter com Python

    Imagine a possibilidade de manter o seu perfil no Twitter (X) sempre ativo, compartilhando conteúdos relevantes, notícias de última hora

    Ler mais

    Tempo de leitura: 12 minutos
    26/02/2026
    Automação e Scripts
    Foto do Leandro Hirt

    Como executar comandos do terminal com Python em 2 minutos

    Aprender a interagir com o sistema operacional é um dos grandes marcos na jornada de quem está decidindo aprender Python.

    Ler mais

    Tempo de leitura: 9 minutos
    25/02/2026
    Automação e Scripts
    Foto do Leandro Hirt

    Como gerar e editar planilhas Excel com Python em minutos

    Gerar e editar planilhas Excel com Python em minutos é uma das habilidades mais valiosas para quem busca aumentar a

    Ler mais

    Tempo de leitura: 12 minutos
    23/02/2026