Envio de E-mail com Python em 3 passos

Nesse artigo vamos ensinar de uma forma prática e fácil de como fazer envio de e-mail com Python, sem utilizar bibliotecas de terceiros, essa solução pode ser incorporada a um script ou até API escrita nessa linguagem.

Para fazer essa implementação vamos fazer o uso de duas bibliotecas smtplib e a biblioteca email, elas vão facilitar nossa implementação já que entregam funções especificas para esse uso.

Passo 1: Configurando o ambiente

Para realizar essa implementação você precisará do ambiente Python devidamente instalado, pois vamos fazer uso das bibliotecas que já fazem parte da sua biblioteca padrão. Para usá-las precisamos apenas importar as classes especificas a partir da biblioteca email.mime, segue abaixo um exemplo de como importar:

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

Será necessário também que você possua um servidor SMTP para conseguir fazer o envio de e-mails, para o nosso exemplo você pode usar um serviço de e-mail como o Gmail por exemplo.

Importante salientar que para envio de grandes quantidades de e-mail talvez será necessário você contratar um serviço especifico para isso um AWS SES por exemplo.

Em ambos os casos você precisará do endereço smtp do sevidor de email a porta, e um usuário e senha válidos.

Para testes você pode utilizar uma conta no Gmail por exemplo:

Aqui estão as configurações básicas para o servidor SMTP do Google:

  • Servidor SMTP: smtp.gmail.com
  • Porta: 587
  • Método de Segurança: STARTTLS (TLS)
  • Nome de Usuário: Seu endereço de e-mail do Gmail completo (incluindo o “@gmail.com”).
  • Senha: A senha da sua conta do Gmail.

Para usar o Gmail você precisará fazer uma configuração na sua conta para permitir o acesso de aplicativos menos seguros, mas atenção é interessante qua após os testes você remova essa permissão por questões de segurança do seu e-mail.

Passo 2: Implementando o envio de e-mail

O código abaixo representa uma implementação simples do envio:

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

# Configurações do servidor SMTP
smtp_server = 'smtp.seu-servidor-smtp.com'
smtp_port = 587  # Porta SMTP (pode variar dependendo do provedor)
smtp_username = 'seu-email@dominio.com'
smtp_password = 'sua-senha'

# Crie uma mensagem MIMEMultipart
msg = MIMEMultipart()
msg['From'] = 'seu-email@dominio.com'
msg['To'] = 'destinatario@dominio.com'
msg['Subject'] = 'Assunto do e-mail'

# Corpo do e-mail
body = 'Este é o corpo do e-mail.'
msg.attach(MIMEText(body, 'plain'))

# Conecte-se ao servidor SMTP e envie o e-mail
try:
    server = smtplib.SMTP(smtp_server, smtp_port)
    server.starttls()
    server.login(smtp_username, smtp_password)
    server.sendmail(smtp_username, 'destinatario@dominio.com', msg.as_string())
    server.quit()
    print('E-mail enviado com sucesso')
except Exception as e:
    print(f'Erro ao enviar o e-mail: {str(e)}')
Python

É importante observar que você deve substituir as informações de conexão do seu servidor SMTP para que o envio seja bem sucedido.

Passo 3: Testando a implementação

Agora que temos tudo implementado e as informações devidamente ajustadas, podemos executar o código e verificar o envio de fato.

Esse processo pode ser feito via linha de comando, basta abrir o terminal no diretório do seu arquivo e executar o comando abaixo substituindo meu_script.py pelo nome do arquivo que você criou.

python meu_script.py
Terminal

Em caso de sucesso será impresso no terminal a frase “E-mail enviado com sucesso”, já em caso de erro deve ser impresso “Erro ao enviar o e-mail” com algumas informações do porque ocorreu o erro.

Em caso de erro, verifica atentamente todas as informações do servidor que você forneceu e se ele está habilitado para envio de e-mail por terceiros.

Conclusão

Como vimos enviar e-mails através da linguagem Python é relativamente simples, e como mencionado anteriormente esse código pode ser incorporado a qualquer solução usando essa linguagem. Um ponto interessante seria encapsular esse código em uma função que pode ser chamado em outros pontos do código abstraindo assim o seu uso e tornando o uso mais escalável principalmente segregando responsabilidades.

Mauricio Lima
Mauricio Lima

Bacharel em Ciência da Computação, profissional dedicado ao desenvolvimento de software e entusiasta da tecnologia.

Artigos: 65