obtener el correo electrónico mensajes no leídos, sin afectar el estado sin leer [duplicar]

StackOverflow https://stackoverflow.com/questions/1564237

Pregunta

    

Esta pregunta ya tiene una respuesta aquí:

         

En este momento es un cuadro de Gmail pero tarde o temprano lo quiero a escala.

Deseo sincronizar una copia de un buzón personal en vivo (carpetas Entrada y Salida) en otro lugar, pero no quiero afectar al estado unread de los mensajes no leídos.

¿qué tipo de acceso hará que esta más fácil? No puedo encontrar ninguna información si IMAP afectarán al estado de leer, pero parece que puedo restablecer manualmente un mensaje a leer. Pop, por definición, no afecta el estado sin leer pero nadie parece usar emergente para acceder a su Gmail, ¿por qué?

¿Fue útil?

Solución 5

si ayuda a nadie, GAE le permite recibe correo electrónico como una petición HTTP, así que por ahora sólo estoy reenvío de mensajes de correo electrónico allí.

Otros consejos

En el mundo IMAP, cada mensaje tiene banderas. Puede establecer las banderas individuales en cada mensaje. Al buscar un mensaje, en realidad es posible leer el mensaje, sin aplicar el visto \ bandera.

La mayoría de los clientes de correo se aplicará lo Visto \ bandera cuando se lee el mensaje. Por lo tanto, si el mensaje ya ha sido leído, fuera de su aplicación, entonces usted tendrá que quitar la bandera \ Seen.

Al igual que para tu información ... aquí es la parte relevante acerca de las banderas de los RFC:

A la señal de sistema es un nombre de indicador que se pre-definido en este    especificación. Todos los indicadores del sistema comienzan con "\". determinado sistema    banderas (\ eliminados y \ SEEN) han descrito una semántica especial    en otra parte. Los indicadores del sistema definidos actualmente son:

    \Seen
       Message has been read

    \Answered
       Message has been answered

    \Flagged
       Message is "flagged" for urgent/special attention

    \Deleted
       Message is "deleted" for removal by later EXPUNGE

    \Draft
       Message has not completed composition (marked as a draft).

    \Recent
       Message is "recently" arrived in this mailbox.  This session
       is the first session to have been notified about this
       message; if the session is read-write, subsequent sessions
       will not see \Recent set for this message.  This flag can not
       be altered by the client.

       If it is not possible to determine whether or not this
       session is the first session to be notified about a message,
       then that message SHOULD be considered recent.

       If multiple connections have the same mailbox selected
       simultaneously, it is undefined which of these connections
       will see newly-arrived messages with \Recent set and which
       will see it without \Recent set.

Hay una opción de .PEEK en el comando FETCH en IMAP que explícitamente no se establezca el indicador / Visto.

el comando FETCH en el RFC 3501 y desplazarse hacia abajo un poco a la página 57 o busque "BODY.PEEK".

Es necesario especificar la sección cuando se utiliza BODY.PEEK. Las secciones se explican en IMAP comando documentaciones bajo el cuerpo [] << parcial >>

import getpass, imaplib

M = imaplib.IMAP4()
M.login(getpass.getuser(), getpass.getpass())
M.select()
typ, data = M.search(None, 'ALL')
for num in data[0].split():
    typ, data = M.fetch(num, '(BODY.PEEK[])')
    print 'Message %s\n%s\n' % (num, data[0][5])
M.close()
M.logout()

PS: quería fijar respuesta dada Gene Wood pero no se le permitió porque editar fue menor de 6 caracteres (BODY.PEEK -> BODY.PEEK [])

Nadie utiliza POP, ya que por lo general quieren la funcionalidad adicional de IMAP, tales como el estado de seguimiento de mensajes. Cuando esta funcionalidad está consiguiendo solamente en su camino y necesita soluciones, creo que el uso de la mejor opción de POP -)

Para el seguimiento de la respuesta de Dan Goldstein anterior , en Python la sintaxis para utilizar la opción ".PEEK" sería llamar IMAP4.fetch y pasarlo" BODY.PEEK "

Para aplicar esto al ejemplo en el pitón docs :

import getpass, imaplib

M = imaplib.IMAP4()
M.login(getpass.getuser(), getpass.getpass())
M.select()
typ, data = M.search(None, 'ALL')
for num in data[0].split():
    typ, data = M.fetch(num, '(BODY.PEEK)')
    print 'Message %s\n%s\n' % (num, data[0][5])
M.close()
M.logout()
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top