2011-07-16 13 views
5

Con el siguiente código de rubí, puedo leer el correo de un usuario en una bandeja de entrada a través de IMAP:Cómo archivar un mensaje usando el rubí `net/imap`

require 'net/imap' 
imap = Net::IMAP.new('imap.gmail.com',993,true) 
imap.login('user','passwd') 
imap.select('INBOX') 
mailIds = imap.search(['ALL']) 
mailIds.each do |id| 
    msg = imap.fetch(id,'RFC822')[0].attr['RFC822'] 
    puts msg 
end 
imap.logout() 
imap.disconnect() 

Quiero saber cómo puedo archivar y marca leer correos electrónicos Quiero mover los correos electrónicos de la bandeja de entrada del usuario.

Respuesta

5

Uso store method

require 'net/imap' 
imap = Net::IMAP.new('imap.gmail.com', 993, true) 
imap.login('user', 'passwd') 
imap.select('INBOX') 
mailIds = imap.search(['ALL']) 
mailIds.each do |id| 
    msg = imap.fetch(id, 'RFC822')[0].attr['RFC822'] 
    puts msg 
    imap.store(id, "+FLAGS", [:Seen]) 
end 
imap.logout() 
imap.disconnect() 
+1

Esto no parece trabajar en cajas de Gmail: intento TIENDA en carpeta de sólo lectura (fallos) – artagnon

+0

¿Ha seleccionado explícitamente una carpeta? No funcionó para mí hasta que agregué la selección de carpeta allí (imap.select 'INBOX') – JakubM

Cuestiones relacionadas