Gmailからメールをダウンロードし、特定のパターンに一致する添付ファイルをダウンロードするRubyスクリプトに取り組んでいます。私はこれをRuby用の優れたMailgemに基づいています。Ruby1.9.2を使用しています。私はRubyの経験があまりなく、提供されたヘルプに感謝します。
以下のコードでは、emailsは、特定のラベルを含む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