我想使用Ruby/Mikel Mail gem访问pop3,但我找不到从服务器中删除邮件的方法.这里有一些功能不正常的示例代码,它们解释了我如何误解所提供的rdoc规范.
require 'rubygems'
require 'mail'
Mail.defaults do
retriever_method :pop3, { :address => '...',
:user_name => '...',
:password => '...' }
end
puts "#{Mail.all.length} messages on server found."
if Mail.all.length > 0
mm = Mail.first
puts mm.from
puts "I delete all but the first mail!"
mm.mark_for_delete = false
Mail.find_and_delete
puts "#{Mail.all.length} messages on server found."
end
Run Code Online (Sandbox Code Playgroud)
结果是服务器上有2封邮件,这个脚本只删除两者.相反,我只想删除第一个.
我正在尝试使用YAML文件,从中读取并向其写入值列表.在第一次运行此脚本时,正确创建了yaml文件,但是在第二次运行时它会抛出一个我不知道要修复的转换TypeError.
db_yml = 'store.yml'
require 'psych'
begin
if File.exist?(db_yml)
yml = Psych.load_file(db_yml)
puts "done load"
yml['reminders']['reminder_a'] = [123,456]
yml['reminders']['reminder_b'] = [457,635,123]
File.write(db_yml, Psych.dump(yml) )
else
#the file does not exist yet, create an empty one.
File.write(db_yml, Psych.dump(
{'reminders' => [
{'reminder_a'=> [nil]},
{'reminder_b'=> [nil]}
]}
)) #Store
end
rescue IOError => msg
# display the system generated error message
puts msg
end
Run Code Online (Sandbox Code Playgroud)
在第一次运行时生成文件store.yml:
---
reminders:
- reminder_a:
-
- reminder_b:
-
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.但是在第二次运行时,它失败了
done load
yamlstore.rb:23:in `[]=': no implicit conversion of …Run Code Online (Sandbox Code Playgroud)