Como Enviar E-mails com Python Usando SMTP

Anderson L Pereira
4 min readSep 15, 2024

--

Enviar e-mails programaticamente é uma habilidade útil para diversos projetos e aplicações, como notificações automáticas ou sistemas de alerta. Neste artigo, vamos explorar como usar Python para enviar e-mails utilizando o servidor SMTP do Gmail.

A seguir, vamos detalhar o código e entender suas funcionalidades.

Bibliotecas Necessárias

Para enviar e-mails com Python, utilizamos duas bibliotecas principais:

  1. smtplib: É o módulo que permite fazer a conexão com o servidor SMTP e enviar e-mails.
  2. email.mime: Fornece as classes necessárias para construir o e-mail em diferentes formatos, como texto simples ou HTML.

O código começa com a importação desses módulos:

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
  • smtplib é responsável pela interação com o servidor SMTP.
  • MIMEMultipart é utilizado para criar um e-mail com várias partes (por exemplo, texto simples e HTML).
  • MIMEText é usado para definir o conteúdo do e-mail (texto simples ou HTML).

Definindo as Informações da Conta

Agora, você precisa definir suas credenciais de e-mail (remetente). Neste caso, estamos usando o Gmail, então precisaremos do e-mail e da senha:

meu_email = 'seuemail@gmail.com'
senha = 'suasenha'

Essas variáveis armazenam o seu e-mail e a senha que será usada para se autenticar no servidor SMTP do Gmail.

Nota de Segurança: Nunca compartilhe suas credenciais diretamente em código público. Em projetos reais, é recomendável usar variáveis de ambiente ou serviços de gerenciamento de segredos.

Criando a Mensagem de E-mail

Aqui, usamos o MIMEMultipart() para criar uma estrutura de e-mail. Isso permite incluir tanto o corpo do e-mail quanto o assunto e os destinatários:

msg = MIMEMultipart()
msg['From'] = meu_email
msg['To'] = 'destinatario@gmail.com'
msg['Subject'] = 'Assunto do Email'
  • msg['From']: Define o remetente do e-mail.
  • msg['To']: Define o destinatário do e-mail.
  • msg['Subject']: Define o assunto da mensagem.

Adicionando o Corpo do E-mail

O corpo do e-mail pode ser tanto em texto simples como em HTML. Neste exemplo, estamos usando texto simples:

corpo = 'Olá, este é um e-mail enviado por um script Python!'
msg.attach(MIMEText(corpo, 'plain'))

MIMEText(corpo, 'plain'): Cria o corpo do e-mail como texto simples. Se você quisesse usar HTML, substituiria 'plain' por 'html'.

Conectando ao Servidor SMTP

A parte central deste script é a conexão com o servidor SMTP do Gmail. Vamos utilizar smtplib.SMTP para abrir uma conexão com o servidor na porta 587, que é a porta usada para envio de e-mails com TLS (Transport Layer Security):

try:
server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls() # Segurança
server.login(meu_email, senha) # Login
  • server = smtplib.SMTP('smtp.gmail.com', 587): Estabelece uma conexão com o servidor SMTP do Gmail na porta 587.
  • server.starttls(): Coloca a conexão em modo seguro usando TLS.
  • server.login(meu_email, senha): Autentica com o servidor usando o e-mail e senha fornecidos.

Enviando o E-mail

Agora que estamos conectados e autenticados no servidor, podemos enviar o e-mail:

    texto = msg.as_string()
server.sendmail(meu_email, 'destinatario@gmail.com', texto)
server.quit() # Fechando conexão
print('E-mail enviado com sucesso!')
  • msg.as_string(): Converte o e-mail no formato necessário para ser enviado pelo SMTP.
  • server.sendmail(meu_email, 'destinatario@gmail.com', texto): Envia o e-mail para o destinatário.
  • server.quit(): Fecha a conexão com o servidor SMTP.

Tratamento de Erros

É sempre importante lidar com erros ao trabalhar com redes e conexões externas. O código utiliza um bloco try-except para capturar e exibir mensagens de erro:

except Exception as e:
print(f'Erro ao enviar e-mail: {e}')

Caso algo dê errado (como um problema de autenticação ou falha de rede), o erro será capturado e exibido para facilitar a depuração.

Conclusão

Esse script básico permite que você envie e-mails de maneira automatizada usando Python e o servidor SMTP do Gmail. É uma solução simples, mas poderosa, que pode ser integrada em diferentes aplicações, como notificações de sistemas, alertas de monitoramento, entre outras funcionalidades.

Abaixo está o código completo:

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

# Informações da conta
meu_email = 'seuemail@gmail.com'
senha = 'suasenha'

# Criando a mensagem
msg = MIMEMultipart()
msg['From'] = meu_email
msg['To'] = 'destinatario@gmail.com'
msg['Subject'] = 'Assunto do Email'

# Corpo do email
corpo = 'Olá, este é um e-mail enviado por um script Python!'
msg.attach(MIMEText(corpo, 'plain'))

# Conexão ao servidor SMTP do Gmail
try:
server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls() # Segurança
server.login(meu_email, senha) # Login
texto = msg.as_string()
server.sendmail(meu_email, 'destinatario@gmail.com', texto) # Enviando email
server.quit() # Fechando conexão
print('E-mail enviado com sucesso!')
except Exception as e:
print(f'Erro ao enviar e-mail: {e}')

Agora que você conhece os detalhes do processo, pode adaptar este código para suas necessidades e até mesmo integrá-lo em projetos maiores.

Fonte: https://pythonacademy.com.br/blog/como-enviar-email-utilizando-python

Código fonte com modificações:

https://github.com/andersonluizpereira/python_serie_web/tree/main/serie_python_web/curiosidades/email_gmail

Vlw — A Prova rs

--

--

No responses yet