2012-04-25 21 views
6

Estoy haciendo la automatización usando Watir que crea un correo electrónico que debo verificar. Me señalaron que la joya del correo electrónico es la forma más fácil de hacer esto.Necesito ayuda para leer los correos electrónicos con la gema "mail" en ruby ​​

He añadido el siguiente código y puedo obtener el primer correo electrónico de mi bandeja de entrada.

require 'mail' 
require 'openssl' 

Mail.defaults do 
    retriever_method :pop3, :address => "email.someemail.com", 
          :port  => 995, 
          :user_name => 'domain/username', 
          :password => 'pwd', 
          :enable_ssl => true 
end 

puts Mail.first 

Soy nuevo en este foro y tienen siguientes preguntas:

  1. ¿Cómo puedo obtener todos los correos electrónicos no leídos? Intenté Mail.all, Mail.first, Mail.last, pero nada devuelve el correo electrónico no leído.

  2. ¿Cómo puedo obtener todos los enlaces que están presentes en los correos electrónicos? ¿O el cuerpo del mensaje de correo electrónico específico? Necesito obtener el cuerpo del correo electrónico del primer correo electrónico no leído.

  3. ¿Cómo puedo obtener correos electrónicos de una carpeta específica, si tengo subcarpetas dentro de mi bandeja de entrada?

+0

Watir no tiene nada que ver con su pregunta. No estoy seguro de cómo funciona esto, pero creo que deberías tratar de elegir las etiquetas correctas. –

Respuesta

1

Parece que ha leído algunos de los documentation. Mail.all devuelve todos los correos electrónicos, incluidos los leídos. Mail.first devuelve el primero sin leer. Me imagino que al hacer eso volveré al siguiente sin leer. Si su sistema está controlado, no debería preocuparse por tantos correos electrónicos no leídos. Si yo fuera usted, lo probaría en IRB hasta que lo maneje, tal vez incluso construya una clase que lo haga más fácil de usar para usted. Buena suerte.

Actualización: La documentación de la joya del Correo. Si Mail.first no devuelve un correo electrónico no leído (todo el tiempo), entonces el autor debe saberlo. Puede enviar un problema. Yo no uso esa joya yo mismo. Utilizo una joya de Gmail para probar.

Mail.all #=> Returns an array of all emails 
Mail.first #=> Returns the first unread email 
Mail.last #=> Returns the first unread email 
+0

no, yo no trabajé. – user1356838

+0

con Mail. En primer lugar, siempre recupera el primer correo electrónico de la bandeja de entrada. nunca recupera el primer correo electrónico no leído del buzón. – user1356838

+0

También quiero obtener solo todos los correos no leídos. Pero tengo el mismo problema: 'Mail.all' recupera todos los correos,' Mail.first' el primero (independientemente de si se lee o no). –

0

la forma de salvar el momento en el que se lee mails y entonces la próxima vez cuando se lee todos los correos electrónicos de proceso sólo más tarde que la fecha? Sé que es una solución, pero creo que no es compatible con la gema de correo. Mailman gem lo admite, pero borra el correo una vez que lo procesa.

13

La sección 6.4.4 of the IMAP protocol indica los diferentes indicadores de búsqueda que puede utilizar para buscar mensajes.

Puede recuperar sólo los mensajes nuevos que pasa por las banderas de búsqueda para el método de búsqueda de este modo:

new_messages = Mail.find(keys: ['NOT','SEEN']) 

Este mensaje también fue contestada en un issue on the Mail GitHub repo.

Cuestiones relacionadas