Lecture du courrier SMTP sur une ligne

J’essaie d’obtenir une seule ligne d’UNIX pour lire et ensuite supprimer un email (parce que je veux appeler la ligne d’une fonction C ++).

Si je fais ceci:

/bin/echo -ne "USER [email protected]\nPASS fred\nLIST\nRETR 1\nQUIT" | /usr/bin/nc -i 1 mail.site 110 

… ça marche bien, en retournant le contenu du mail.

Mon problème est le bit de suppression – Je dois supprimer le courrier après l’avoir lu mais, pour une raison quelconque, la commande ci-dessous ne fonctionne pas:

 /bin/echo -ne "USER [email protected]\nPASS fred\nLIST\nDELE 1\nQUIT" | /usr/bin/nc -i 1 mail.site 110 

Le résultat est:

 +OK Dovecot ready. +OK +OK Logged in. +OK 2 messages: 1 3913 2 3925 . +OK Marked to be deleted. 

… mais si je répète la commande LIST, les deux mails apparaissent toujours.

La commande DELE fonctionne bien si je me connecte par telnet et que je le fais de manière interactive, mais pas à partir d’une seule ligne.

Des idées?

N’est-ce pas la voie? Vous posez la question et 2 minutes plus tard, vous trouvez la réponse …

J’ai juste besoin d’un ‘\ n’ supplémentaire après la commande QUIT. Déclenche le courrier pour faire réellement la suppression. Doh!