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

Ruby 使用gmail gem跟踪一些电子邮件,ruby,gmail,tracking,Ruby,Gmail,Tracking,我正在使用gmail gem发送电子邮件,我需要跟踪这些电子邮件。我该怎么做 我正在尝试搜索带有消息id的电子邮件,但它会带来我收件箱中的所有电子邮件,我只需要特定电子邮件的回复 这是我的实际代码: *使用消息\u id保存电子邮件* mail = gmail.deliver(email) Email.create(:message_id => mail.message_id, :from => user.email, :to => annotation.to, :body

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

我正在尝试搜索带有消息id的电子邮件,但它会带来我收件箱中的所有电子邮件,我只需要特定电子邮件的回复

这是我的实际代码:

*使用消息\u 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)
messages = gmail.inbox.mails(:message_id => email.message_id)
*搜索带有消息\u 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)
messages = gmail.inbox.mails(:message_id => email.message_id)
问候,

法布里西奥·法拉利·德坎波斯

你可以看看

uid=gmail.conn.uid\u搜索([“标题”、“消息ID”和“”])[0]
#=> 103
message=Gmail::message.new(Gmail.inbox,uid)
#=>  # 
message.subject
#=>“你好,世界”
message.message\u id
#=> ""

没有找到一种方法可以通过邮件id进行搜索。通过这种方式,你可以获得一封特定的电子邮件。

使用标准的gmail gem,这似乎效果很好

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

我可以使用(不确定这是否与您使用的宝石相同)

消息ID标头是生成的电子邮件对象的一部分。然后可以使用
rfc822msgid
(中描述)对其进行搜索

下面是一个例子:

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)

你用的是哪款gmail gem?链接到回购协议会有所帮助。