Ferramenta de linha de comando para envio automatizado de candidaturas de emprego via email.
- Rust 1.70+
- Conta de email com SMTP habilitado (Gmail, Outlook, etc.)
git clone <repo>
cd job-mailer
cargo build --releaseO executavel sera gerado em ./target/release/job-mailer.
sudo cp ./target/release/job-mailer /usr/local/bin/rustup target add x86_64-pc-windows-gnu
cargo build --release --target x86_64-pc-windows-gnujob-mailer/
├── job-mailer # executavel
├── config.json # perfil e template
├── .env # credenciais SMTP
├── cv.pdf # curriculo
└── sent_log.json # log de envios (gerado automaticamente)
Contem as credenciais SMTP. Nunca versionar este ficheiro.
SMTP_USER=seu-email@gmail.com
SMTP_PASS=sua-app-password
- Aceder a Google Account > Security
- Activar 2-Factor Authentication
- Em "App passwords", gerar nova password
- Usar a password gerada no campo SMTP_PASS
{
"profile": {
"name": "Nome Completo",
"email": "seu@email.com",
"phone": "+244 923 456 789",
"title": "Cargo Pretendido",
"summary": "Descricao profissional breve.",
"skills": ["Skill1", "Skill2", "Skill3"],
"experience_years": 5,
"linkedin": "https://linkedin.com/in/seu-perfil",
"github": "https://github.com/seu-usuario"
},
"smtp": {
"host": "smtp.gmail.com",
"port": 587
},
"template": {
"subject": "Candidatura - {{title}} - {{name}}",
"body": "Corpo do email com placeholders"
}
}| Placeholder | Descricao |
|---|---|
{{name}} |
Nome completo |
{{email}} |
|
{{phone}} |
Telefone |
{{title}} |
Cargo/titulo |
{{summary}} |
Descricao profissional |
{{skills}} |
Lista de skills separadas por virgula |
{{experience_years}} |
Anos de experiencia |
{{linkedin}} |
URL do LinkedIn |
{{github}} |
URL do GitHub |
Colocar o curriculo em formato PDF na mesma pasta do executavel com o nome cv.pdf.
./job-mailerO que queres fazer?
> Enviar single (1 email)
Enviar bulk (varios emails)
Preview do email
Ver historico
Sair
Envia uma candidatura para um unico destinatario.
- Seleccionar "Enviar single"
- Inserir email do destinatario
- Aguardar confirmacao de envio
Envia candidaturas para multiplos destinatarios com intervalo aleatorio entre envios.
- Seleccionar "Enviar bulk"
- Inserir emails (um por linha, linha vazia para terminar)
- Definir delay minimo entre envios (segundos)
- Definir delay maximo entre envios (segundos)
- Confirmar envio
O intervalo aleatorio entre envios reduz a probabilidade de deteccao como spam.
Visualiza o email que sera enviado com todos os placeholders substituidos.
Lista os ultimos 20 emails enviados com status (OK/FAIL) e data/hora.
O ficheiro sent_log.json regista todos os envios:
{
"records": [
{
"email": "destino@empresa.com",
"sent_at": "2024-01-15T10:30:00",
"success": true,
"error": null
}
]
}| Provider | Host | Port |
|---|---|---|
| Gmail | smtp.gmail.com | 587 |
| Outlook | smtp-mail.outlook.com | 587 |
| Yahoo | smtp.mail.yahoo.com | 587 |
| Zoho | smtp.zoho.com | 587 |
.env
sent_log.json
cv.pdf
target/
O ficheiro .env nao existe ou nao contem as variaveis necessarias.
Executar a aplicacao uma vez para gerar o ficheiro padrao, ou criar manualmente.
Colocar o ficheiro cv.pdf na mesma pasta do executavel.
- Verificar credenciais no .env
- Para Gmail, usar App Password (nao a password normal)
- Verificar se 2FA esta activo na conta
- Verificar pasta de spam do destinatario
- Aumentar intervalo entre envios no modo bulk
- Verificar se o email de origem esta validado no provider