【问题标题】:Need help on reading emails with "mail" gem in ruby在 ruby​​ 中使用“邮件”gem 阅读电子邮件时需要帮助
【发布时间】:2012-04-25 17:17:26
【问题描述】:

我正在使用 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. 如果我的收件箱中有子文件夹,我如何从特定文件夹中获取电子邮件?

【问题讨论】:

  • Watir 与您的问题没有任何关系。我不确定这是如何工作的,但我认为您应该尝试选择正确的标签。

标签: ruby email


【解决方案1】:

6.4.4 of the IMAP protocol 部分表示您可以用来搜索消息的不同搜索标志。

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

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

此消息也在issue on the Mail GitHub repo 中得到答复。

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 与Mail.First,它总是检索收件箱的第一封电子邮件。它永远不会从邮箱中检索第一封未读的电子邮件。
    • 我也只想获取所有未读邮件。但是我有同样的问题:Mail.all 检索所有邮件,Mail.first 第一个(无论是否已阅读)。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-15
      • 1970-01-01
      • 1970-01-01
      • 2012-12-02
      • 1970-01-01
      • 2021-12-13
      • 1970-01-01
      相关资源
      最近更新 更多