Este script Python permite conectar ao Gmail via autenticação OAuth 2.0 e deletar mensagens com base em filtros personalizados. Antes de deletar, o script exibe uma amostra das mensagens que atendem aos critérios de busca.
- ✅ Autenticação OAuth 2.0 segura com o Gmail
- 🔍 Busca de mensagens com filtros personalizados
- 📋 Visualização de amostra das mensagens antes da exclusão
- 🗑️ Exclusão de TODAS as mensagens que combinam com o filtro
⚠️ Confirmação antes da exclusão- 📊 Controle do número máximo de resultados para amostra
- 🔄 Processamento em lotes para melhor performance
- Python 3.7+ instalado
- Conta Google com Gmail ativo
- Projeto no Google Cloud Console com Gmail API ativada
pip install -r requirements.txt-
Acesse o Google Cloud Console
- Vá para https://console.cloud.google.com/
- Faça login com sua conta Google
-
Crie um novo projeto ou selecione um existente
- Clique no seletor de projeto no topo
- Clique em "Novo Projeto" ou selecione um existente
-
Ative a Gmail API
- No menu lateral, vá em "APIs e Serviços" > "Biblioteca"
- Procure por "Gmail API"
- Clique na API e depois em "Ativar"
-
Crie credenciais OAuth 2.0
- Vá em "APIs e Serviços" > "Credenciais"
- Clique em "Criar Credenciais" > "ID do cliente OAuth 2.0"
- Selecione "Aplicativo de desktop"
- Dê um nome ao projeto (ex: "Gmail Cleaner")
- Clique em "Criar"
-
Baixe o arquivo de credenciais
- Clique no ID do cliente criado
- Clique em "Baixar JSON"
- Renomeie o arquivo para
credentials.json - Coloque o arquivo na mesma pasta do script
gmail-tools/
├── gmail_cleaner.py # Script principal
├── requirements.txt # Dependências
├── credentials.json # Suas credenciais OAuth (você precisa criar)
├── token.pickle # Token de autenticação (criado automaticamente)
└── README.md # Este arquivo
python gmail_cleaner.py "filtro" [opções]python gmail_cleaner.py --testpython gmail_cleaner.pypython gmail_cleaner.py "gmail"python gmail_cleaner.py "gmail" --deletepython gmail_cleaner.py "from:exemplo@gmail.com" --deletepython gmail_cleaner.py "subject:newsletter" --deletepython gmail_cleaner.py "gmail" --max-results 100 --deleteO script funciona em duas etapas:
python gmail_cleaner.py "gmail"- Mostra uma amostra de até 50 mensagens (configurável)
- Exibe detalhes: remetente, assunto, data, preview
- NÃO deleta nenhuma mensagem
- Útil para verificar se o filtro está correto
python gmail_cleaner.py "gmail" --delete- Primeiro mostra a amostra (como acima)
- Depois busca TODAS as mensagens que combinam com o filtro
- Deleta TODAS as mensagens encontradas (não apenas a amostra)
- Processa em lotes de 100 mensagens para melhor performance
- Mostra progresso em tempo real
# Mostra amostra de 50 mensagens com "gmail" no assunto
python gmail_cleaner.py "subject:gmail"
# Deleta TODAS as mensagens com "gmail" no assunto (pode ser 1000+ mensagens)
python gmail_cleaner.py "subject:gmail" --deleteO script aceita todos os filtros de busca do Gmail:
gmail- Busca por "gmail" em qualquer lugarfrom:email@exemplo.com- Mensagens de um remetente específicoto:email@exemplo.com- Mensagens para um destinatário específicosubject:palavra- Mensagens com palavra no assuntohas:attachment- Mensagens com anexosis:unread- Mensagens não lidasis:read- Mensagens lidasafter:2023/01/01- Mensagens após uma databefore:2023/12/31- Mensagens antes de uma datalarger:10M- Mensagens maiores que 10MBsmaller:1M- Mensagens menores que 1MB
Você pode combinar filtros usando operadores lógicos:
# Mensagens não lidas de um remetente específico
python gmail_cleaner.py "from:exemplo@gmail.com is:unread" --delete
# Mensagens com anexos e assunto específico
python gmail_cleaner.py "has:attachment subject:relatório" --delete
# Mensagens antigas de um remetente
python gmail_cleaner.py "from:newsletter@gmail.com before:2023/01/01" --deleteSe os filtros não estiverem funcionando, execute o script de diagnóstico:
python test_gmail.pyEste script irá:
- Testar a conexão básica
- Verificar se há mensagens na caixa
- Testar vários filtros comuns
- Mostrar estatísticas detalhadas
Se você conseguir buscar mensagens mas receber erro de permissão ao deletar:
python fix_permissions.pyEste script irá:
- Verificar as permissões atuais
- Re-autenticar com permissões corretas
- Testar se consegue deletar mensagens
- Fornecer instruções específicas
- Sempre teste primeiro sem
--deletepara ver quais mensagens serão afetadas - O script pede confirmação antes de deletar (digite "SIM" para confirmar)
- As mensagens são movidas para a Lixeira do Gmail (não são deletadas permanentemente)
- Mantenha o arquivo
credentials.jsonseguro e não o compartilhe
- O arquivo
token.picklecontém suas credenciais de acesso - Mantenha este arquivo seguro e não o compartilhe
- Se suspeitar de comprometimento, delete o arquivo
token.picklee re-autentique
Sintomas:
- O script se autentica corretamente
- Mas sempre retorna "nenhuma mensagem encontrada"
- Mesmo com filtros simples como "gmail" ou ""
Soluções:
-
Execute o teste de diagnóstico:
python test_gmail.py
-
Teste a conexão básica:
python gmail_cleaner.py --test
-
Verifique se há mensagens na caixa:
- Acesse o Gmail no navegador
- Confirme que há mensagens na caixa de entrada
- Verifique se não está filtrando por pastas específicas
-
Teste sem filtro primeiro:
python gmail_cleaner.py
-
Possíveis causas:
- Caixa de entrada vazia
- Filtros muito específicos
- Problemas de permissão da API
- Mensagens em pastas específicas (Spam, Lixeira, etc.)
- Verifique se o arquivo está na mesma pasta do script
- Confirme se o nome está correto (exatamente
credentials.json)
- Delete o arquivo
token.picklee tente novamente - Verifique se o arquivo
credentials.jsonestá correto - Confirme se a Gmail API está ativada no Google Cloud Console
- A API do Gmail tem limites de uso
- Aguarde algumas horas e tente novamente
- Considere usar filtros mais específicos para reduzir o número de requisições
- Verifique se o escopo da API está correto
- Confirme se a Gmail API está ativada
- Tente re-autenticar deletando
token.pickle
O script exibe informações detalhadas sobre:
- Status da autenticação
- Número de mensagens encontradas
- Detalhes de cada mensagem (remetente, assunto, data)
- Confirmação de exclusão
- Progresso em tempo real durante a deleção
Sinta-se à vontade para contribuir com melhorias, correções de bugs ou novas funcionalidades!
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.