我正在开发一个Ruby脚本,它将从Gmail下载电子邮件并下载与特定模式匹配的附件.我基于Ruby 的优秀Mail gem.我使用的是Ruby 1.9.2.我不是那种经验丰富的Ruby,并感谢任何提供的帮助.
在下面的代码中,电子邮件是从gmail返回的包含特定标签的电子邮件数组.我所坚持的是循环遍历电子邮件数组并处理每封电子邮件上的多个附件.如果我指定一个索引值,电子邮件[index] .attachments.each的内部循环确实有效,我没有成功地包装第一个循环来遍历数组的所有索引值.
emails = Mail.find(:order => :asc, :mailbox => 'label')
emails.each_with_index do |index|
emails[index].attachments.each do | attachment |
# Attachments is an AttachmentsList object containing a
# number of Part objects
if (attachment.filename.start_with?('attachment'))
filename = attachment.filename
begin
File.open(file_dir + filename, "w+b", 0644) {|f| f.write attachment.body.decoded}
rescue Exception => e
puts "Unable to save data for #{filename} because #{e.message}"
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
And*_*eim 10
语法each_with_index是这样的:
@something.each_with_index do |thing,index|
puts index, thing
end
Run Code Online (Sandbox Code Playgroud)
然后,您应该替换emails.each_with_index do | index |行
同
emails.each_with_index do |email,index|
Run Code Online (Sandbox Code Playgroud)
但是我没有看到你实际使用索引,所以你可以probalby简化它:
emails.each do |email|
email.attachments.each do | attachment |
....
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9491 次 |
| 最近记录: |