#include "__POP3_UIDL.h" #include "POP3Server.h" namespace mail { int __POP3_UIDL::processCommand(coreutils::ZString request, POP3Session &session, POP3Server &server) { if (!session.authenticated) { session.out << "-ERR Not authenticated" << CRLF; return 1; } request.skipWhitespace(); coreutils::ZString numArg = request.getTokenExclude(" "); if (numArg.getLength() > 0) { int msgNum = numArg.asInteger(); MailFolder::Message *message = pop3FindMessage(session, msgNum); if (!message) { session.out << "-ERR No such message" << CRLF; return 1; } session.out << "+OK " << msgNum << " " << (int)message->uid << CRLF; return 1; } session.out << "+OK" << CRLF; const auto &messages = session.mailbox.messages(); for (size_t i = 0; i < messages.size(); ++i) if (session.deletedMarks.count((int)(i + 1)) == 0) session.out << (i + 1) << " " << (int)messages[i].uid << CRLF; session.out << "." << CRLF; return 1; } }