/** * Returns the {@link MessageMetaData} for the given message number or <code>null</code> if it can not be * found. * * @param session * @param number * @return data */ public static MessageMetaData getMetaData(POP3Session session, int number) { @SuppressWarnings("unchecked") List<MessageMetaData> uidList = (List<MessageMetaData>) session.getAttachment(POP3Session.UID_LIST, State.Transaction); if (uidList == null || number > uidList.size()) { return null; } else { return uidList.get(number - 1); } }
@Override protected final Mailbox auth(POP3Session session, String username, String password) throws Exception { return auth(session, (String)session.getAttachment(POP3Session.APOP_TIMESTAMP, State.Connection), username, password); }
/** * Handler method called upon receipt of a STAT command. Returns the number * of messages in the mailbox and its aggregate size. */ @Override @SuppressWarnings("unchecked") public Response onCommand(POP3Session session, Request request) { if (session.getHandlerState() == POP3Session.TRANSACTION) { List<MessageMetaData> uidList = (List<MessageMetaData>) session.getAttachment(POP3Session.UID_LIST, State.Transaction); List<String> deletedUidList = (List<String>) session.getAttachment(POP3Session.DELETED_UID_LIST, State.Transaction); long size = 0; int count = 0; if (uidList.isEmpty() == false) { List<MessageMetaData> validResults = new ArrayList<>(); for (MessageMetaData data : uidList) { if (deletedUidList.contains(data.getUid()) == false) { size += data.getSize(); count++; validResults.add(data); } } } StringBuilder responseBuffer = new StringBuilder(32).append(count).append(" ").append(size); return new POP3Response(POP3Response.OK_RESPONSE, responseBuffer.toString()); } else { return POP3Response.ERR; } }
return new POP3Response(POP3Response.ERR_RESPONSE, responseBuffer.toString()); List<String> deletedUidList = (List<String>) session.getAttachment(POP3Session.DELETED_UID_LIST, State.Transaction);
String parameters = request.getArgument(); if (session.getHandlerState() == POP3Session.TRANSACTION) { List<MessageMetaData> uidList = (List<MessageMetaData>) session.getAttachment(POP3Session.UID_LIST, State.Transaction); List<String> deletedUidList = (List<String>) session.getAttachment(POP3Session.DELETED_UID_LIST, State.Transaction); try { String identifier = session.getUserMailbox().getIdentifier();
public Response onCommand(POP3Session session, Request request) { String parameters = request.getArgument(); List<MessageMetaData> uidList = (List<MessageMetaData>) session.getAttachment(POP3Session.UID_LIST, State.Transaction); List<String> deletedUidList = (List<String>) session.getAttachment(POP3Session.DELETED_UID_LIST, State.Transaction);
/** * Handler method called upon receipt of a QUIT command. This method handles * cleanup of the POP3Handler state. */ @Override @SuppressWarnings("unchecked") public Response onCommand(POP3Session session, Request request) { Response response = null; if (session.getHandlerState() == POP3Session.AUTHENTICATION_READY || session.getHandlerState() == POP3Session.AUTHENTICATION_USERSET) { return SIGN_OFF; } List<String> toBeRemoved = (List<String>) session.getAttachment(POP3Session.DELETED_UID_LIST, State.Transaction); Mailbox mailbox = session.getUserMailbox(); try { String[] uids = toBeRemoved.toArray(new String[toBeRemoved.size()]); mailbox.remove(uids); response = SIGN_OFF; } catch (Exception ex) { response = SIGN_OFF_NOT_CLEAN; LOGGER.error("Some deleted messages were not removed", ex); } try { mailbox.close(); } catch (IOException e) { // ignore on close } return response; }
return response; List<String> deletedUidList = (List<String>) session.getAttachment(POP3Session.DELETED_UID_LIST, State.Transaction);
List<String> deletedUidList = (List<String>) session.getAttachment(POP3Session.DELETED_UID_LIST, State.Transaction);
@Override public Response onCommand(POP3Session session, Request request) { if (session.getAttachment(POP3Session.APOP_TIMESTAMP, State.Connection) == null) {