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

时间:2017-11-10 15:21:58

标签: ruby email pop3

我试图提取从我们的某个服务提供商发送的电子邮件附件,并将其保存到网络驱动器中,以便显示Smashing Dashboard的信息。

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

然而,我对ruby,特别是这个特定的宝石缺乏经验,所以我遇到了破译电子邮件的错误。

###########################################################################
######################## 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:在

     

method_missing

的未定义方法length      来自Pop.rb的

#(NoMethodError):35:main

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

我很感激额外的眼睛检查这个明显错误的东西,甚至是调试它的一些技巧。

1 个答案:

答案 0 :(得分:0)

最终借助此表找到答案:https://i.stack.imgur.com/qbe46.png

将if语句更改为if!(email == [])可以解决问题

谢谢大家帮我思考。