Loading repository data…
Loading repository data…
LiaChaves / repository
Desenvolvi um Mailbot que permite o envio de e-mails em massa com ou sem arquivos anexados.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
Este script Python automatiza o envio de e-mails personalizados através do Gmail usando Selenium.
Ele lê dados de clientes de um arquivo CSV, envia e-mails com anexos e personaliza as mensagens com informações específicas de cada cliente.
pip install selenium webdriver-manager
Ambientes virtuais isolam as dependências do seu projeto, evitando conflitos entre pacotes de diferentes projetos.
Passo a passo para criar e usar um ambiente virtual:
# Instalar o módulo virtualenv
pip install virtualenv
# Criar o ambiente virtual
python -m venv .venv
# Ativar o ambiente virtual
# Windows (PowerShell)
.\.venv\Scripts\Activate
# Linux/MacOS
source .venv/bin/activate
# Instalar dependências
pip install selenium webdriver-manager
MailBot_in_python/
├── .venv/ # Ambiente virtual
├── email_automatico.py # Script principal
└── clientes.csv # Arquivo de dados
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.keys import Keys
import time
import csv
options = Options()
options.add_argument("--user-data-dir=C:\\Pessoa 1") # Perfil do Chrome
options.add_argument("--window-size=1200,768") # Tamanho da janela
options.binary_location = "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe"
driver = webdriver.Chrome(options=options)
driver.get("https://mail.google.com/mail/u/0/")
print("Chrome Browser Invoked")
time.sleep(4) # Aguarda carregamento inicial
clientes = []
with open('clientes.csv', mode='r', encoding='utf-8') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
clientes.append({
'Nome': row['nome'],
'E-mail': row['e-mail'],
'Empresa': row['empresa']
})
apresentacao = r"D:\\Caminho\\Arquivo1.pdf"
escopo = r"D:\\Caminho\\Arquivo2.pdf"
colaboradores = r"D:\\Caminho\\Arquivo3.pdf"
# Destinatário
elemento.send_keys(cliente['E-mail'])
# Assunto
elemento.send_keys(f"Oie {cliente['Nome']} vamos criar uma festa?")
# Corpo da mensagem
corpo.send_keys(f"Eu Lilian convido você e a {cliente['Empresa']}...")
# Anexos
input_arquivo.send_keys(apresentacao)
input_arquivo.send_keys(escopo)
input_arquivo.send_keys(colaboradores)
# Envio
driver.find_element(By.XPATH, "//div[@class='T-I J-J5-Ji aoO v7 T-I-atl L3']").click()
# Tratamento de erros
except Exception as e:
webdriver.ActionChains(driver).send_keys(Keys.ESCAPE).perform()
driver.refresh()
driver.quit()
time.sleep(30) # Aumente para 20-30 segundos na primeira execução
# Faça login manualmente
# Após login, reduza para:
time.sleep(4)
nome,e-mail,empresa
João Silva,joao@empresa.com,Empresa A
Maria Souza,maria@outro.com,Empresa B
elemento.send_keys(f"Novo assunto para {cliente['Nome']}")
corpo.send_keys(f"Novo corpo para {cliente['Empresa']}")
novo_anexo = r"D:\\NovoCaminho\\Arquivo.pdf"
nome,e-mail,empresa,telefone
'Telefone': row['telefone']
corpo.send_keys(f"Contato: {cliente['Telefone']}")
| Problema | Solução |
|---|---|
| XPaths desatualizados | Atualizar usando DevTools (F12) |
| Bloqueio do Gmail | Limitar a 350–500 e-mails por dia |
| Erros de login | Verificar caminho do perfil do Chrome |
| Versão incompatível | Usar webdriver-manager |
| Perfil não encontrado | Criar perfil manualmente |
MIT License – Disponível gratuitamente no GitHub.
Criado e disponibilizado por Lilian Chaves.