Envio por e-mail
Configuração (Gmail / Google Workspace)
| Campo | Valor |
|---|---|
| Servidor | smtp.gmail.com |
| Porta | 587 (STARTTLS) |
| Usuário | seu e-mail completo |
| Senha | senha de app, não a senha da conta |
Crie a senha de app em https://myaccount.google.com/apppasswords (exige verificação em duas etapas). Em contas Workspace o administrador pode precisar liberar essa opção. A senha é usada só durante o envio e nunca é gravada em disco.
Como enviar
- Escreva assunto e texto (aceitam campos:
Olá {nome|primeiro},). - Filtre a lista, use Só pendentes visíveis e marque quem vai receber.
- Clique em Enviar e acompanhe o log. Teste antes com um único certificado para você mesmo.
Como o envio se protege de bloqueios
- Ritmo: 1 e-mail a cada ~2 segundos (cerca de 30/min).
- Reconexão automática: se a conexão cai, ela é refeita.
- Novas tentativas: até 3 por e-mail, com espera de 60s e 180s em erros temporários (4xx, timeout).
- Parada de segurança: após 5 falhas seguidas o envio para. Aguarde e reenvie os pendentes.
- Sem duplicar: quem já recebeu (
enviado_em) é pulado em qualquer reenvio. - Autenticação recusada: o envio para na hora.
Limites do Gmail
| Conta | Limite diário aproximado |
|---|---|
| Gmail pessoal | ~500 destinatários |
| Google Workspace | ~2.000 destinatários |
Ao estourar, o Google responde com erros como 421 4.3.0 Temporary System Problem ou 550 5.4.5.
Para listas grandes, envie em lotes (ex.: 200 por vez, com intervalo) e reenvie os pendentes depois.
Reenviar após erro
- Não gere os certificados de novo. Gerar apaga os PDFs e zera o controle de quem já recebeu.
- Aguarde alguns minutos (ou o dia seguinte, se foi limite diário).
- Use Só pendentes visíveis e envie de novo.
O log
- Na tela: em tempo real durante o envio.
- Em disco:
saida/<certificado>/envios.log, uma linha por evento, com data completa, sempre acrescentando (nunca sobrescreve). Sobrevive a reinício do servidor/container.
[2026-10-28 23:02:45] OK Maria → maria@exemplo.com
[2026-10-28 23:04:27] AVISO Ana → ana@exemplo.com: (421, 4.3.0 ...) (tentativa 1/3, aguardando 60s)
[2026-10-28 23:09:00] INFO Envio finalizado. 120 enviado(s) nesta rodada.
Níveis: OK enviado, AVISO pulado ou nova tentativa, ERRO falha definitiva, INFO andamento.
Erros comuns
| Mensagem | Significado / ação |
|---|---|
421 4.3.0 Temporary System Problem |
Limite temporário do Google. O app espera e tenta de novo; se persistir, aguarde. |
Connection unexpectedly closed / timeout |
Conexão caiu. O app reconecta sozinho. |
535 Username and Password not accepted |
Use senha de app e confira o usuário. |
550 5.4.5 Daily user sending quota exceeded |
Cota diária estourada. Reenvie os pendentes amanhã. |
sem e-mail, ignorado |
A linha não tem e-mail; confira a coluna de e-mail. |