使用 Ruby 邮件 Gem 阅读电子邮件主题

Using Ruby Mail Gem to read Email subjects

我正在尝试提取从我们的服务提供商之一发送的电子邮件的附件并将它们保存到网络驱动器以显示 Smashing Dashboard 的信息。

我正在尝试使用邮件 Gem 来执行此操作: https://github.com/mikel/mail http://www.rubydoc.info/github/mikel/mail/Mail

然而,我对 ruby 尤其是这个特定的 gem 非常缺乏经验,所以我 运行 正在处理破译电子邮件的错误。

###########################################################################
######################## Connect to the POP Server ########################
###########################################################################
require 'mail'
Mail.defaults do
  retriever_method :pop3, :address    => "pop.gmail.com",
                          :port       => 995,
                          :user_name  => '----',
                          :password   => '----',
                          :enable_ssl => true
end

###################################################################
######################## Retrieve the Mail ########################
###################################################################

email = Mail.first    #=> Returns the first unread 

puts email  

if  (email.length > 0)
        puts "New Mail Found"
else
        puts "No New Mail"
end

当我运行没有新邮件时,一切正常运行,但是当有新邮件时,我收到以下错误。

/var/lib/gems/2.3.0/gems/mail-2.6.6/lib/mail/message.rb:1379:in

method_missing: undefined method length for

# (NoMethodError) from Pop.rb:35:in main

这一行对应if语句。然而,github 示例非常清楚地使用 mail.length 来检查返回的电子邮件数量,我只是不知道如何解决这个问题。

我很感激能有更多的眼睛来检查它是否有任何明显的错误,或者甚至是一些调试它的提示。

最终借助这个 table 找到了答案:https://i.stack.imgur.com/qbe46.png

将 if 语句更改为 if !(email == []) 就成功了

谢谢大家帮我想通了