
Cansado de enviar e-mails repetitivos manualmente? Seja para enviar relatórios, notificar usuários ou disparar cobranças, a automação pode economizar um tempo precioso no seu dia a dia. A boa notícia é que o Python, com suas bibliotecas nativas, torna essa tarefa surpreendentemente simples.
Neste guia completo, vamos mergulhar no processo de envio de e-mails usando o servidor SMTP do Gmail. Você não precisará de bibliotecas complexas como Selenium; vamos utilizar as ferramentas que o Python já oferece: smtplib
para a conexão e email
para construir a mensagem.
Ao final deste tutorial, você será capaz de:
- Entender o funcionamento do protocolo SMTP.
- Construir e enviar e-mails em formato HTML.
- Criar um script reutilizável para automatizar seus envios.
Vamos começar!
Pré-requisitos: A Senha de App do Gmail
Antes de escrevermos uma única linha de código, precisamos de um passo crucial de segurança. Como nosso script irá acessar sua conta do Gmail, não podemos usar sua senha principal diretamente. Em vez disso, o Google nos fornece uma “Senha de App”, que é uma senha de 16 dígitos que concede a um aplicativo permissão para acessar sua Conta do Google.
Para gerar uma, siga os passos:
- Ative a Verificação em Duas Etapas: Se você ainda não a utiliza, é obrigatório ativá-la. Acesse a página de segurança da sua Conta do Google e ative a “Verificação em duas etapas”.
- Gere a Senha de App:
- Na mesma página de segurança, procure e clique em “Senhas de app”.
- Você pode ser solicitado a fazer login novamente.
- Na tela “Senhas de app”, clique em “Selecionar app” e escolha “E-mail”.
- Clique em “Selecionar dispositivo” e escolha “Computador Windows” (ou um nome personalizado).
- Clique em “Gerar”.
- Copie e Guarde a Senha: Uma senha de 16 caracteres (sem espaços) será exibida. Copie esta senha! Você não a verá novamente. É ela que usaremos no nosso script.

Entendendo os Componentes
Nosso script usará duas bibliotecas nativas do Python:
smtplib
: Esta biblioteca é a nossa ponte de comunicação. Ela implementa o Simple Mail Transfer Protocol (SMTP), que é o protocolo padrão da internet para o envio de e-mails. Usaremos osmtplib
para nos conectar ao servidor do Gmail, fazer o login e transmitir nossa mensagem.email
: Se osmtplib
é o carteiro, a bibliotecaemail
é a ferramenta para escrever a carta. Com ela, podemos construir a estrutura da nossa mensagem, incluindo:MIMEMultipart
: Usado para criar mensagens que contêm múltiplas partes, como texto e HTML, ou texto e anexos.MIMEText
: Usado para criar as partes de texto da mensagem, que podem ser formatadas como texto simples ou HTML.
Mãos à Obra: O Código
Agora que temos nossa senha de app e entendemos as ferramentas, vamos ao código! Crie um arquivo chamado main.py
e vamos começar.
1. Definindo as Variáveis
Primeiro, vamos definir nossas credenciais e as informações do servidor.
# Informações do servidor SMTP do Gmail
servidor_smtp = 'smtp.gmail.com'
porta = 465 # Porta para conexão SSL
# Suas credenciais
# ATENÇÃO: Use a Senha de App gerada, e não sua senha principal do Gmail!
de_email = 'seu_email@gmail.com'
senha = 'rkeplwhwafuhfy' # Substitua pela sua senha de app de 16 dígitos
# Lista de destinatários
para_emails = ['destinatario1@email.com', 'destinatario2@email.com']
# Detalhes do E-mail
assunto = 'Teste Python'
mensagem_html = """
<html>
<body>
<p>Olá,<br><br>
Este é um <b>E-mail</b> enviado pelo servidor SMTP do Gmail.<br>
Obrigado!
</p>
</body>
</html>
"""

2. Criando a Função de Envio
Para tornar nosso código organizado e reutilizável, vamos encapsular a lógica de envio em uma função.
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
def enviar_mensagem(remetente, destinatarios, assunto, mensagem, servidor, porta, senha):
"""
Função para enviar um e-mail para uma lista de destinatários.
"""
for email in destinatarios:
# Cria a estrutura do e-mail como um objeto Multipart
msg = MIMEMultipart()
msg['Subject'] = assunto
msg['From'] = remetente
msg['To'] = email
# Anexa o corpo da mensagem em formato HTML
# O 'html' especifica o subtipo do MIMEText
parte_html = MIMEText(mensagem, 'html')
msg.attach(parte_html)
# Inicia a conexão segura e envia o e-mail
try:
# Usar 'with' garante que a conexão será fechada automaticamente
with smtplib.SMTP_SSL(servidor, porta) as server:
server.login(remetente, senha)
server.sendmail(remetente, email, msg.as_string())
print(f'E-mail foi enviado para {email}')
except Exception as e:
print(f'Falha ao enviar a mensagem para {email}')
print(f'Ocorreu um erro: {e}')
Análise do Código da Função:
- Loop
for email in destinatarios
: A função itera sobre a lista de e-mails, enviando uma mensagem para cada um. msg = MIMEMultipart()
: Criamos o “contêiner” do nosso e-mail.msg['Subject']
,msg['From']
,msg['To']
: Definimos os cabeçalhos essenciais do e-mail.msg.attach(...)
: Anexamos o corpo da mensagem (nosso HTML) ao contêiner.with smtplib.SMTP_SSL(...) as server
: Esta é a parte principal. Criamos uma conexão segura (SSL) com o servidor SMTP na porta especificada. Owith
é uma ótima prática, pois garante que a conexão seja encerrada mesmo que ocorram erros.server.login(...)
: Autenticamos na nossa conta usando o e-mail do remetente e a senha de app.server.sendmail(...)
: Finalmente, enviamos o e-mail. Note o uso demsg.as_string()
, que converte nosso objeto de mensagem em uma string formatada que o servidor SMTP entende.
3. Executando o Script
Agora, basta chamar nossa função com as variáveis que definimos no início.
# Chamando a função para executar o envio
enviar_mensagem(
remetente=de_email,
destinatarios=para_emails,
assunto=assunto,
mensagem=mensagem_html,
servidor=servidor_smtp,
porta=porta,
senha=senha
)
Conclusão e Próximos Passos
E pronto! Com poucas linhas de código, você construiu um sistema robusto para enviar e-mails automatizados. O terminal deverá exibir uma mensagem de sucesso para cada destinatário, e em poucos instantes, os e-mails chegarão às suas caixas de entrada.
A partir daqui, as possibilidades são enormes. Você pode aprimorar este script para:
- Ler listas de e-mails e nomes de um arquivo Excel ou CSV para personalizar as mensagens.
- Anexar arquivos, como relatórios em PDF ou planilhas.
- Integrá-lo a um agendador de tarefas (como o
cron
no Linux ou o Agendador de Tarefas no Windows) para que ele rode automaticamente em horários específicos.
Espero que este guia tenha sido útil! Caso tenha ficado com alguma dúvida confira um tutorial em nosso canal: