mirror of
https://github.com/R0m1k3/PleinR.git
synced 2026-10-11 17:27:54 +02:00
Le port et la case « connexion chiffrée » étaient deux champs indépendants qu'il fallait accorder de tête. Passer en 587 sans décocher fait tenter une poignée de main TLS sur un port qui répond en clair : la connexion meurt sur un « wrong version number » que rien ne traduisait. - `src/lib/smtp-config.ts` (pur, testé) : `impliedSecure()`, `tlsMismatch()` et `describeSmtpError()`, qui traduit les échecs courants — mauvaise case, port filtré, identifiants refusés, certificat, expéditeur rejeté — en consigne actionnable, l'explication avant la trace puisque l'écran tronque. - `SmtpAccountForm` (client) réaligne la case sur le port saisi, propose les deux ports courants en pastilles et affiche le désaccord s'il subsiste. Le mot de passe enregistré ne descend pas en prop, seul un booléen le fait. - Transport : `requireTLS` hors TLS implicite — sans lui STARTTLS reste opportuniste et l'identifiant partirait en clair chez un serveur qui ne l'annonce pas — SNI explicite, TLS 1.2 minimum, et délais ramenés à quelques secondes pour qu'un port bloqué en sortie rende son verdict au lieu de figer l'action serveur. - `verifySmtp` referme la socket même en échec et dit sur quel port et dans quel mode la connexion a abouti. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RCUSintYfXnBtwFKQezFSt