在ruby中使用“mail”gem阅读电子邮件需要帮助

我正在使用Watir进行自动化,创建一个我需要检查的电子邮件。 我被指向电子邮件gem是最简单的方法。

我添加了以下代码,并且能够从我的收件箱中收到第一封电子邮件。

require 'mail' require 'openssl' Mail.defaults do retriever_method :pop3, :address => "email.someemail.com", :port => 995, :user_name => 'domain/username', :password => 'pwd', :enable_ssl => true end puts Mail.first 

我是这个论坛的新手,有以下问题:

  1. 如何获取所有未读电子邮件? 我试过Mail.allMail.firstMail.last ,但没有回复未读的电子邮件。

  2. 如何获取电子邮件中存在的所有链接? 或者从特定电子邮件发送邮件正文? 我需要获取第一封未读电子邮件的电子邮件正文。

  3. 如果我的收件箱中有子文件夹,如何从特定文件夹获取电子邮件?

IMAP协议的第6.4.4节指出了可用于搜索消息的不同搜索标志。

您可以通过将搜索标志传递给find方法来检索新消息,如下所示:

 new_messages = Mail.find(keys: ['NOT','SEEN']) 

Mail GitHub仓库中的一个问题也解答了此消息。

看起来你看了一些文档 。 Mail.all返回所有电子邮件,包括阅读电子邮件。 Mail.first返回第一个未读的。 我想这样做会再次回到下一个未读状态。 如果您的系统受到控制,您不必担心这么多未读电子邮件。 如果我是你,我会在IRB中试一试,直到你掌握它,甚至可以构建一个让你更容易使用的类。 祝好运。

更新:来自Mail gem的文档。 如果Mail.first没有返回未读的电子邮件(所有时间),那么作者应该知道。 你可以提交一个问题。 我自己不用那个gem。 我使用gmail gem进行测试。

 Mail.all #=> Returns an array of all emails Mail.first #=> Returns the first unread email Mail.last #=> Returns the first unread email 

如何在您阅读邮件时节省时间,然后下次当您在该日期之后阅读所有邮件处理邮件时? 我知道它是一种解决方法,但我相信它不受邮件gem的支持。 Mailman gem确实支持它,但是一旦你处理它就会删除它。