Como Enviar E-mails com Python Usando SMTP
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:
- smtplib: É o módulo que permite fazer a conexão com o servidor SMTP e enviar e-mails.
- 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:
Vlw — A Prova rs