/ / Проследяване на някои имейли с gmail gem - ruby, gmail, проследяване

Следете някои имейли с gmail gem - ruby, gmail, проследяване

Използвам gmail gem за изпращане на имейли и трябва да проследя тези имейли.

Опитвам да потърся имейла с 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)

* търсене в имейлите с message_id *

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

За разбирането,

Ferrício Ferrari de Campos

Отговори:

3 за отговор № 1

можеш да вземеш Net :: IMAP поглед.

uid =  gmail.conn.uid_search(["HEADER", "Message-ID", "<324820.440351247482145930.JavaMail.coremail@bj163app31.163.com>"])[0]
#=> 103
message = Gmail::Message.new(gmail.inbox, uid)
#=>  #<Gmail::Message0x12a72e798 mailbox=INBOX uid=103>
message.subject
#=> "hello world"
message.message_id
#=> "<324820.440351247482145930.JavaMail.coremail@bj163app31.163.com>"

не са намерили метод може да търсите по message_id.via по този начин можете да получите конкретен имейл.


3 за отговор № 2

Използването на стандартния gmail gem изглежда доста добре

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

0 за отговор № 3

Успях да използвам това този Gmail Gem (не съм сигурен дали това е същият камък, който използвате).

Заглавката ID на съобщението е част от генерирания имейл обект. След това се използва за търсене rfc822msgid (описано в Помощна страница за разширено търсене в Gmail).

Ето един пример:

def gmail_connect
Gmail.connect(email_address, password)
end

def send_email
gmail = gmail_connect
email = gmail.compose do
to recipient@mail.internet
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)