No ha publicado el código fuente, pero aquí está mi respuesta:
¿Cómo obtener el número total de mensajes:
(numMsgs, totalSize) = self.conn_pop3.stat()
Cómo obtener un mensaje específico, conociendo su número en el buzón:
(server_msg, body, octets) = self.conn_pop3.retr(number)
Así que la función que pueda necesitar es retr, devuelve una tupla. Ver here.
¡Cuidado también establece el correo electrónico respectivo como SEEN en el servidor! Probablemente puedas deshacer eso, al menos con IMAP puedes.
Y mi aplicación de un correo electrónico POP3 lib leer:
from poplib import POP3
...
if self.pop3_connected:
try:
#------Check if email number is valid----------------------
(numMsgs, totalSize) = self.conn_pop3.stat()
self.debug(200, "Total number of server messages: ", numMsgs)
self.debug(200, "Total size of server messages: ", totalSize)
if number>numMsgs:
self.debug(200, "\nSorry - there aren't that many messages in your inbox\n")
return False
else:
(server_msg, body, octets) = self.conn_pop3.retr(number)
self.debug(200, "Server Message: " , server_msg)
self.debug(200, "Number of Octets: " , octets)
self.debug(200, "Message body:")
for line in body:
print line
#end for
return True
#endif
finally:
self.__disconnect__()
#endif
También aquí es la conexión POP3, al menos la forma en que he implementado ... más o menos complicado utilizando una comparación de cadenas, pero funcionó para mi aplicación:
def __connect_pop3__(self):
"""\brief Method for connecting to POP3 server
\return True If connection to POP3 succeeds or if POP3 is already connected
\return False If connection to POP3 fails
"""
#------Check that POP3 is not already connected-----------------------
if not self.pop3_connected:
#------Connect POP3-----------------------------------------------
self.debug(100, 'Connecting POP3 with: ', self.host_name, self.user_name, self.pass_name)
self.conn_pop3 = POP3(self.host_name)
res1 = self.conn_pop3.user(self.user_name)
string1 = str(res1)
self.debug(100, 'User identification result:', string1)
res2 = self.conn_pop3.pass_(self.pass_name)
string2 = str(res2)
self.debug(100, 'Pass identification result:', string2)
#------Check if connection resulted in success--------------------
#------Server on DavMail returns 'User successfully logged on'----
if string2.find('User successfully logged on')<>-1 or string1.find('User successfully logged on')<>-1 :
self.pop3_connected = True
return True
else:
return False
#endif
else:
self.debug(255, 'POP3 already connected')
return True
#endif
Es posible que desee [citar la fuente] (http://docs.python.org/library/ poplib.html # pop3-example) para esto. –
larsmans, gracias. Me olvidé de grabar la fuente en mis notas. – unutbu
gracias. Algunos de los mensajes son divertidos, están hechos de código extraño, otros tienen sentido. Pero no los obtengo en orden cronológico. Traté de llegar al final de la matriz y no me devolvió el último mensaje que recibí. – user1119429