Enviar Email com Python: Automação com Outlook – Passo a Passo

Aprenda como enviar email com Python usando o Outlook, sem precisar configurar servidor ou autenticação. Tutorial completo com código e exemplos!

Enviar Email com Python – Automação

Você já quis automatizar o envio de e-mails com Python, mas achou o processo complicado por causa de servidores, portas e autenticações?

Boa notícia: isso pode ser feito com menos de 10 linhas de código — e usando o Outlook que você já tem instalado!

Neste guia, você vai aprender passo a passo como enviar e-mails automáticos com Python, anexar arquivos, incluir dados dinâmicos e criar mensagens com HTML de forma profissional e segura.

Tudo isso sem precisar configurar SMTP ou credenciais manuais. Essa é a forma mais simples e prática, especialmente para quem trabalha em ambiente corporativo.

Para fazer o download do(s) arquivo(s) utilizados na aula, preencha com o seu e-mail:

Não vamos te encaminhar nenhum tipo de SPAM! A Hashtag Treinamentos é uma empresa preocupada com a proteção de seus dados e realiza o tratamento de acordo com a Lei Geral de Proteção de Dados (Lei n. 13.709/18). Qualquer dúvida, nos contate.

Por que Usar o Outlook para Enviar Emails com Python

Muitos tutoriais ensinam a enviar e-mails com Python via SMTP (como Gmail ou Yahoo), mas esse método exige:

  • Liberação de acesso por apps menos seguros;
  • Configuração de portas e certificados;
  • Chaves de autenticação e permissões específicas.

Com o Outlook, tudo isso é desnecessário.

O Python aproveita a sessão já autenticada do aplicativo Outlook instalado, eliminando completamente as etapas manuais de configuração.

Vantagens da Integração Python + Outlook

Ao conectar o Python ao Outlook, você ganha:

  • Facilidade: sem precisar configurar servidor, senha ou token.
  • Segurança: usa as permissões e autenticações já existentes no Office.
  • Compatibilidade: funciona com contas do Outlook, Hotmail e até Gmail configuradas no app.
  • Automação corporativa: ideal para quem trabalha em empresas que utilizam o pacote Microsoft 365.

Se o Outlook envia manualmente, o Python também conseguirá enviar automaticamente!

Preparando o Ambiente: Instale a Biblioteca pywin32

Para que o Python se comunique com os programas do Office (como Outlook, Excel, Word), precisamos da biblioteca pywin32.

Essa biblioteca é um pacote de códigos prontos que permite ao Python interagir com os recursos do Windows.

Para instalá-la, abra o terminal (ou a linha de comando) do seu ambiente de desenvolvimento (IDE) e digite o seguinte comando:

Codigo
pip install pywin32

Dica: Essa biblioteca também é usada para automatizar tarefas no Excel e no Word, uma ótima aliada para quem quer criar rotinas corporativas completas.

Estrutura do Código em 3 Passos

O envio de e-mail com Python segue uma lógica simples composta por 3 etapas:

1. Importar a Biblioteca e Criar a Integração com o Outlook:

O primeiro passo é importar a biblioteca instalada e criar o objeto que representa o aplicativo Outlook.

Python
import win32com.client as win32 # Importa a biblioteca
outlook = win32.Dispatch('Outlook.Application') # Cria o objeto Outlook

2. Criar um Novo E-mail (Item):

Em seguida, pedimos ao objeto Outlook para criar um novo item, que, no contexto, é uma nova mensagem de e-mail.

Python
email = outlook.CreateItem(0) # 0 indica que é uma nova mensagem de e-mail

3. Enviar o E-mail:

Após configurar a mensagem, o comando final é simples:

Python
email.Send()
print("E-mail Enviado")

Com essas três etapas, o Python já consegue se comunicar com o Outlook e enviar mensagens.
Agora, vamos configurar o conteúdo desse e-mail.

Configurando o E-mail: Destinatários, Assunto e Corpo

Entre o passo 2 e o passo 3, precisamos definir as configurações básicas do e-mail. Você fará isso através das propriedades do objeto email que criamos.

PropriedadeFunçãoExemplo
email.ToEndereço(s) do(s) destinatário(s)."email1@exemplo.com.br; email2@exemplo.com.br"
email.SubjectAssunto do e-mail."Relatório Automático do Python"
email.HTMLBodyO corpo do e-mail (usaremos HTML para formatação).Veja a próxima seção.
captura da parte do código que serve para definir as configurações básicas do e-mail

Como enviar o e-mail para mais de um destinatário?

Para enviar o e-mail para múltiplos destinatários, basta separá-los com um ponto e vírgula (;) dentro da mesma string do email.To.

Python
email.To = "destinatario1@empresa.com; destinatario2@empresa.com"
Ícone PythonPython Impressionador

Você vai aprender a linguagem de Programação que mais cresce no Mundo para fazer automações incríveis, desenvolver sites, fazer análises de dados, trabalhar com Ciência de Dados, Inteligência Artificial, mesmo que você nunca tenha tido nenhum contato com Programação na vida.

Black Friday · Lote Especial · Lote 1 · Último Lote

De R$ 1.497 56% OFF54% OFF53% OFF

por 12x R$ 6467,5069

Preço do Lote Especial até 13/11, às 23h59Último dia do Lote Especial: o preço vale até hoje, às 23h59Preço do Lote 1 até 20/11, às 23h59Último dia do Lote 1: o preço vale até hoje, às 23h59Preço do Último Lote até 27/11, às 23h59Último dia do Último Lote: o preço vale até hoje, às 23h59

Começar agoraQuero a oferta de Black FridaySeta para a direita
Fundo PythonTelas Python
Luz Python

Personalizando o Corpo do E-mail com HTML e Dados Dinâmicos

A propriedade email.HTMLBody aceita código HTML, permitindo criar mensagens com formatação (parágrafos, negrito, cores etc.). Isso nos permite criar um e-mail mais completo e personalizado.

Como formatar o corpo do e-mail?

Para escrever o corpo da mensagem, usamos o recurso de Triple Quotes (""") do Python, que permite escrever textos longos em múltiplas linhas, e usamos tags HTML básicas, como a tag <p> (parágrafo).

  1. Use aspas triplas (""") no início e fim do corpo do e-mail.
  2. Use a tag <p> no início do seu parágrafo e </p> no final.

Exemplo de formatação básica:

Python
email.HTMLBody = f"""
<p>Olá Lira, aqui é o código Python</p>

<p>O faturamento da loja foi de R$1.500</p>
<p>Vendemos 10 produtos</p>
<p>O ticket Médio foi de R$150</p>

<p>Abs,</p>
"""
captura da parte do código que formata o corpo do email

Como Inserir Dados Dinâmicos (Variáveis) dentro do e-mail?

Você pode incluir informações calculadas diretamente no corpo do e-mail usando f-strings do Python.

  1. Basta adicionar um f minúsculo antes das aspas triplas.
  2. Coloque a variável que você deseja dentro de chaves ({ }).
Python
faturamento = 1500
quantidade_produtos = 10
ticket_medio = faturamento / quantidade_produtos

email.HTMLBody = f"""
<p>Olá,</p>
<p>O faturamento da loja foi de **R$ {faturamento}**.</p>
<p>A quantidade de produtos vendidos foi de **{quantidade_produtos}** e o tíquete médio de **R$ {ticket_medio}**.</p>
<p>Atenciosamente,</p>
"""

Isso permite enviar mensagens personalizadas automaticamente, sem alterar o código a cada envio.

Anexando Arquivos e Enviando

Se seu relatório estiver em uma planilha ou PDF, você pode anexá-lo facilmente, mas precisará do caminho completo do arquivo.

Como anexar um arquivo no e-mail?

Você deve usar o método email.Attachments.Add(), passando o caminho completo (local no seu computador) do arquivo.

Python
caminho_anexo = r"C:\Users\SeuUsuario\Downloads\relatorio.xlsx" 
# O 'r' antes das aspas garante que o caminho seja lido corretamente
email.Attachments.Add(caminho_anexo)

Você pode adicionar quantos anexos quiser repetindo o método.

Enviando o E-mail com Python

Com todas as configurações feitas, é só chamar o comando email.Send() para disparar sua automação!

Código Completo da Automação - Enviar Email com Python

Python
import win32com.client as win32

# criar a integração com o outlook
outlook = win32.Dispatch('outlook.application')

# criar um email
email = outlook.CreateItem(0)

faturamento = 1500
qtde_produtos = 10
ticket_medio = faturamento / qtde_produtos

# configurar as informações do seu e-mail
email.To = "pythonimpressionador@gmail.com; pythonimpressionador+lira@gmail.com"
email.Subject = "E-mail automático do Python"
email.HTMLBody = f"""
<p>Olá Lira, aqui é o código Python</p>

<p>O faturamento da loja foi de R${faturamento}</p>
<p>Vendemos {qtde_produtos} produtos</p>
<p>O ticket Médio foi de R${ticket_medio}</p>

<p>Abs,</p>
<p>Código Python</p>
"""

# anexo = "C://Users/joaop/Downloads/arquivo.xlsx"
# email.Attachments.Add(anexo)

email.Send()
print("Email Enviado")

Conclusão - Enviar E-mail com Python

Agora você aprendeu como enviar e-mails automáticos com Python e Outlook de forma prática, rápida e segura sem precisar configurar SMTP.

Essa automação é perfeita para:

  • Enviar relatórios diários ou semanais automaticamente;
  • Notificar equipes de vendas e resultados;
  • Automatizar comunicações internas em empresas;
  • Criar alertas e lembretes personalizados.

Dominar esse tipo de automação é o primeiro passo para automatizar rotinas corporativas completas com Python — e integrar ferramentas como Excel, Power BI e Gmail.

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!

O que você aprende neste vídeo

Resposta rápida: Como enviar e-mail por Python usando o Outlook instalado no computador, sem configurar certificado nem porta. A aula cria a integração, monta o e-mail com destinatário, assunto e corpo em HTML, coloca variáveis no texto e adiciona mais de um destinatário e anexos. O envio direto pelo Gmail, sem Outlook, não é tratado.

Neste vídeo (17 min):

  • 0:40 - Requisito: o Outlook instalado no computador
  • 1:22 - E se o seu e-mail for do Gmail
  • 2:49 - Primeiro passo no arquivo Python: importar a biblioteca de integração com o Outlook e instalá-la pelo terminal
  • 3:23 - Criar a integração com o Outlook em uma linha de código
  • 5:32 - Criar o e-mail como um item do Outlook
  • 6:13 - Configurar destinatário, assunto e corpo do e-mail
  • 8:04 - Corpo escrito em HTML, entre aspas triplas, para formatar o e-mail e ter mais de uma linha
  • 9:26 - Parágrafos do corpo marcados com as tags de HTML
  • 11:10 - Enviar o e-mail e conferir que ele chegou na caixa de entrada, com o assunto e o corpo escritos
  • 13:37 - Dados dinâmicos no corpo: o faturamento e a quantidade de produtos entram como variáveis
  • 14:12 - Enviar para mais de uma pessoa, com outro endereço no mesmo campo do destinatário separado por ponto e vírgula
  • 14:42 - Anexar arquivos ao e-mail

Trechos do vídeo:

  • Enviar pelo Outlook dispensa configurar certificado e porta, mas exige o Outlook instalado no computador: o Python dispara a mensagem pela conta cadastrada nele.
  • Usar o Outlook não obriga a ter um e-mail Outlook ou Hotmail: o e-mail do Gmail funciona se a conta estiver cadastrada no Outlook do computador.
  • No corpo em HTML, cada parágrafo precisa estar entre <p> e </p>. Para outras formatações, como texto amarelo, é preciso usar o HTML correspondente.
  • Para colocar valores calculados no texto do e-mail, escreva f antes das aspas (uma f-string) e o nome da variável entre chaves no lugar do número digitado.
  • Cada anexo precisa do local do arquivo e do nome com a extensão, e vale repetir as duas linhas de código para o anexo seguinte.

FAQ – Perguntas Frequentes

1. Como enviar e-mails automáticos com Python de forma simples?

A maneira mais fácil é usar o Outlook já instalado no computador. Com a biblioteca pywin32, o Python consegue acessar sua conta do Outlook e enviar mensagens automáticas sem precisar configurar servidor SMTP ou autenticação manual.

2. Preciso de servidor SMTP para enviar e-mails com Python?

Não, se você usar o Outlook. O Python se conecta diretamente ao aplicativo por meio da integração com win32com, aproveitando a conta já logada. Isso elimina o uso de portas, senhas e certificados.

3. Como enviar e-mails com anexos no Python?

Basta usar o método email.Attachments.Add() e informar o caminho completo do arquivo.

4. Posso personalizar o corpo do e-mail com HTML no Python?

Sim! Use a propriedade email.HTMLBody com tags HTML, como <p> e <b>, para criar mensagens formatadas. Assim, é possível incluir cores, parágrafos e até informações dinâmicas com variáveis do Python.

5. É possível enviar e-mails automáticos em segundo plano com Python?

Sim. Por padrão, o envio ocorre diretamente pelo Outlook, sem precisar abrir a janela de composição. O comando email.Send() dispara a mensagem automaticamente, tornando a automação rápida e discreta.

Hashtag Treinamentos

Para acessar outras publicações de Python, clique aqui!


Quer aprender mais sobre Python com um minicurso básico gratuito?

Posts mais recentes de Python

Posts mais recentes da Hashtag Treinamentos

  • Agente de IA local com Python: crie o seu com Ollama
    Aprenda a criar um agente de IA local com Python, Ollama e LangChain: rode modelos no seu PC, sem pagar por API e sem expor os dados da empresa.
  • Claude Dashboards: Como Usar Passo a Passo
    Aprenda a usar o Claude Dashboards: conecte o Google Sheets, crie um dashboard com IA, confira de onde vem cada número e atualize os dados em um clique.
  • O que é tabela dinâmica?
    O que é tabela dinâmica no Excel, para que serve e o passo a passo para resumir grandes bases de dados sem fórmulas.