Um número de mensagem atribuído a uma mensagem pelo comando 'select' ou 'examine' IMAP é consistente em todas as sessões IMAP?

2

Basicamente, a mensagem número um permanece número um sob outra sessão / local do IMAP?

    
por tkane 01.06.2012 / 13:23

1 resposta

0

O UID permanecerá o mesmo para sempre, desde que o UIDVALIDITY não mude (é muito raro o UIDVALIDITY mudar)

O MSGNO (sequência de 1 a "EXISTS") é local para essa conexão específica. Se o cliente abrir várias conexões, o MSGNO poderá ser diferente em cada uma delas.

Dito isso, o MSGNO e o UID são sempre classificados da mesma maneira. Um MSGNO superior sempre será mapeado para um UID maior.

Alguns comandos IMAP podem fazer com que o MSGNO mude - mas você sempre verá um resultado EXPUNGE informando qual foi removido - todos os números mais altos diminuem em 1 nesse ponto. Se novas mensagens forem adicionadas, você também receberá EXISTS atualizados para informar quantos.

(tudo isso muda se você "ENABLE QRESYNC" e o servidor o suporta - mas são as regras do IMAP básico).

Como Janne apontou nos comentários - o RFC3501 contém todos os detalhes sangrentos sobre quais comandos podem alterar o MSGNO e quais devem preservá-lo, mesmo que alguns MSGNOs apontem para mensagens expurgadas.

Resumindo: se você estiver interagindo em diferentes sessões ou diferentes conexões na mesma sessão, use as variantes de UID dos comandos e estará seguro.

    
por 30.06.2012 / 20:21

Tags