使用gmail gem跟踪一些电子邮件

时间:2011-05-19 20:44:17

标签: ruby gmail tracking

我正在使用gmail gem发送电子邮件,我需要跟踪这些电子邮件。我怎么能这样做?

我正在尝试使用message_id搜索电子邮件,但它会从我的收件箱中收集所有电子邮件,而我只想要特定电子邮件的回复。

这是我的实际代码:

*使用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)

此致

FabrícioFerraride Campos

3 个答案:

答案 0 :(得分:3)

你可以看看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搜索的方法,这样就可以获得特定的电子邮件。

答案 1 :(得分:3)

使用标准的gmail gem,这看起来效果很好

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

答案 2 :(得分:0)

我能够使用this Gmail Gem执行此操作(不确定这是否与您正在使用的宝石相同)。

Message ID标头是生成的电子邮件对象的一部分。然后可以使用node_modules进行搜索(在Gmail's Advanced Search help page中描述)。

以下是一个例子:

rfc822msgid