我正在开发一个 Ruby 脚本,该脚本将从 Gmail 下载电子邮件并下载与特定模式匹配的附件。我基于 Ruby 的优秀Mail gem。我正在使用 Ruby 1.9.2。我对 Ruby 没有那么丰富的经验,并感谢提供的任何帮助。
在下面的代码中,电子邮件是从 gmail 返回的包含特定标签的电子邮件数组。我坚持的是遍历电子邮件数组并处理每封电子邮件上可能有多个附件的内容。如果我指定索引值,则 emails[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