private void appendToMailbox(InputStream message, Date datetime, Flags flagsToBeSet, ImapSession session, String tag, ImapCommand command, MessageManager mailbox, Responder responder, MailboxPath mailboxPath) {
try {
final MailboxSession mailboxSession = ImapSessionUtils.getMailboxSession(session);
final SelectedMailbox selectedMailbox = session.getSelected();
final MailboxManager mailboxManager = getMailboxManager();
final boolean isSelectedMailbox = selectedMailbox != null && selectedMailbox.getPath().equals(mailboxPath);
final ComposedMessageId messageId = mailbox.appendMessage(message, datetime, mailboxSession, !isSelectedMailbox, flagsToBeSet);
if (isSelectedMailbox) {
selectedMailbox.addRecent(messageId.getUid());
}
Long uidValidity = mailboxManager.getMailbox(mailboxPath, mailboxSession).getMetaData(false, mailboxSession, FetchGroup.NO_COUNT).getUidValidity();
unsolicitedResponses(session, responder, false);
okComplete(command, tag, ResponseCode.appendUid(uidValidity, new UidRange[] { new UidRange(messageId.getUid()) }), responder);
} catch (MailboxNotFoundException e) {
tryCreate(session, tag, command, responder, e);
} catch (MailboxException e) {
LOGGER.error("Unable to append message to mailbox {}", mailboxPath, e);
no(command, tag, responder, HumanReadableText.SAVE_FAILED);
}
}