2015-05-07 5 views
1

Интересно, как JavaMail API выдает сообщения IMAP при вызове Folder.close(true)? Согласно документам, единственный параметр «expunge» метода «close» определяет, следует ли удалять все сообщения, которые ранее были отмечены флагом \ Deleted. Однако в source code (V. 1.4.7) я не вижу какой-либо части кода в методе close (класс IMAPFolder), который ничего не делает или ничего не делает в этом направлении. Может ли кто-нибудь помочь мне понять влияние параметра вытеснения?Как API JavaMail выдает сообщения при закрытии папки IMAP

Благодарим заблаговременно и хорошо провели день.

+0

вы связаны с 'org.apache.geronimo.javamail' sourcedoc и при условии, байткода из' javax.mail'. Это две совершенно разные вещи. Что это будет? – specializt

+0

Извините, я исправил ссылку на документы. Это пакет javax.mail. – xSNRG

+0

CLOSE определяется IMAP для удаления. – Max

ответ

1

IMAPFolder.class, линия 1310:

// If the expunge flag is set, close the folder first. 
if (expunge && protocol != null) 
    protocol.close(); 

IMAPProtocol.class, линия 1201:

/** 
* CLOSE Command. 
* 
* @see "RFC2060, section 6.4.2" 
*/ 
public void close() throws ProtocolException { 
    simpleCommand("CLOSE", null); 
} 

https://tools.ietf.org/html/rfc2060#section-6.4.2:

ЗАКР команда навсегда удаляет из выбранного в данный момент mailbox все сообщения, у которых установлен флаг \ Deleted, и возвращается к состояние с подтвержденным статусом. Не отправлены неотмеченные ответы EXPUNGE .

Сообщения не удаляются, и не сообщается об ошибке, если почтовый ящик выбран командой EXAMINE или иначе выбран для чтения.

Даже если выбран почтовый ящик, команда SELECT, EXAMINE или LOGOUT МОЖЕТ быть выпущена без предварительной выдачи команды CLOSE. Команды SELECT, EXAMINE и LOGOUT неявно закрывают выбранный в настоящий момент почтовый ящик без исключения. Однако, когда много сообщений удалены, крупная или LOGOUT CLOSE-SELECT

+0

Строка 1310 выполняется только тогда, когда пул соединений заполнен (ваш первый фрагмент кода). – xSNRG

+0

нет, есть второе 'else' ниже этого условия, в котором параметр снова сбрасывается. Я не думаю, что вы действительно хотели узнать об этом, вы, очевидно, просто хотите критиковать рабочую реализацию. «ЗАКРЫТЬ» происходит только в том случае, если установлен параметр паттерна expunge, конец истории. Если вы хотите переслать свои мысли разработчикам пакетов, вы можете это сделать. – specializt

+0

Однако я понял. Параметр expunge основан на закрытии почтового ящика. EXPUNGE, однако, является специальной командой IMAP, которую можно вызвать явно. Поэтому вводить в заблуждение, чтобы назвать этот параметр точно таким же. – xSNRG

 Смежные вопросы

  • Нет связанных вопросов^_^