2017-02-23 148 views
2

Я пытаюсь получить одну строку UNIX для чтения, а затем удалить электронное письмо (потому что я хочу вызывать одну строку из функции C++).Чтение почты SMTP в одной строке

Если я делаю это:

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

... она отлично работает, возвращая содержимое почты.

Моя проблема удаления бит - я должен удалить почту после его прочтения, но, по некоторым причинам, ниже команда не работает:

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

Выход:

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

... но если я повторяю команду LIST, обе письма все еще появляются.

Команда DELE отлично работает, если я подключаюсь к telnet и выполняю ее интерактивно, но не с одной строки.

Любые идеи?

+0

Несвязанный с вашей проблемой, но правильная последовательность конца строки - CRLF ('' \ r \ n "'). –

ответ

1

Не так ли? Вы задаете вопрос, а затем через 2 минуты вы найдете ответ ...

Мне просто потребовалось дополнительное «\ n» после команды QUIT. Запускает почту, чтобы на самом деле удалить. Doh!