使用 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 == []) 就成功了
谢谢大家帮我想通了
我正在尝试提取从我们的服务提供商之一发送的电子邮件的附件并将它们保存到网络驱动器以显示 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 methodlength
for# (NoMethodError) from Pop.rb:35:in
main
这一行对应if语句。然而,github 示例非常清楚地使用 mail.length 来检查返回的电子邮件数量,我只是不知道如何解决这个问题。
我很感激能有更多的眼睛来检查它是否有任何明显的错误,或者甚至是一些调试它的提示。
最终借助这个 table 找到了答案:https://i.stack.imgur.com/qbe46.png
将 if 语句更改为 if !(email == []) 就成功了
谢谢大家帮我想通了