2011-05-19 19 views
6

Estoy usando gmail gem para enviar correos electrónicos y necesito hacer un seguimiento de estos correos electrónicos. ¿Cómo puedo hacer esto?Realiza un seguimiento de algunos correos electrónicos con gmail gem

Estoy intentando buscar en el correo electrónico con el mensaje_id, pero trae todos los correos electrónicos de mi bandeja de entrada y solo quiero las respuestas de un correo electrónico específico.

Aquí está mi código real:

* guardar el correo electrónico con el message_id *

mail = gmail.deliver(email) 
Email.create(:message_id => mail.message_id, :from => user.email, 
    :to => annotation.to, :body => annotation.content, :title => annotation.title, 
    :annotation => annotation, :user => user) 

* buscar los correos con message_id *

messages = gmail.inbox.mails(:message_id => email.message_id) 

Saludos,

Fabricio Ferrari de Campos

+0

Qué joya Gmail está utilizando? El enlace al repositorio ayudaría. – FelixD

Respuesta

3

puede tomar Net::IMAP una mirada.

uid = gmail.conn.uid_search(["HEADER", "Message-ID", "<[email protected]>"])[0] 
#=> 103 
message = Gmail::Message.new(gmail.inbox, uid) 
#=> #<Gmail::Message0x12a72e798 mailbox=INBOX uid=103> 
message.subject 
#=> "hello world" 
message.message_id 
#=> "<[email protected]>" 

no han encontrado un método para buscar por message_id.via de esta manera puede obtener un correo electrónico específico.

3

El uso de la gema Gmail estándar, esto parece que funciona bastante bien

messages = gmail.inbox.mails(:query => ['HEADER', 'Message-ID', email.message_id]) 
0

que era capaz de hacer esto utilizando this Gmail Gem (no estoy seguro si esa es la misma joya que está utilizando).

El encabezado ID de mensaje es parte del objeto de correo electrónico que se genera. Luego se puede buscar usando rfc822msgid (descrito en Gmail's Advanced Search help page).

He aquí un ejemplo:

def gmail_connect 
    Gmail.connect(email_address, password) 
end 

def send_email 
    gmail = gmail_connect 
    email = gmail.compose do 
    to [email protected] 
    subject 'Hello' 
    content_type 'text/html; charset=UTF-8' 
    body 'Hello, World' 
    end 

    gmail.deliver(email) 
    gmail.logout 
    email.message_id 
end 

def verify_sent_email(id) 
    gmail = gmail_connect 
    found = gmail.mailbox('sent').find(rfc822msgid: id).count 
    gmail.logout 
    (found > 0) ? true : false 
end 

id = send_email 
verify_sent_email(id) 
Cuestiones relacionadas