メールを受信して添付ファイルを保存するスクリプト・修正版1

仕様変更して、とりあえず修正してみた。

[MailDownload.rb]

require 'net/pop'
require 'rubygems'
require 'tmail'

emailAccount	= "メールアカウント"
emailPassword	= "メールパスワード"
indextime = Time.now.strftime "%Y%m%d%H%M%S"

pop = Net::POP3.new( 'メールサーバ', 110 )
pop.start( emailAccount , emailPassword )
if pop.mails.empty? then
  puts 'no mail.'
else
 i=1
  pop.each_mail do |m|   # or "pop.mails.each ..."
    File.open( 'inbox/' + indextime + "_" + i.to_s , 'w' ) {|f|
      f.write m.pop
    }
	#受信後、メールを削除する場合はコメントアウト
    #m.delete
    i += 1
  end
  puts "#{pop.mails.size} mails popped."
end
pop.finish

[AttachmentSave.rb]

require 'net/pop'
require 'rubygems'
require 'tmail'
require 'fileutils'
require 'find'
require 'nkf'

inboxDir ="メールファイルのディレクトリ"	#メールファイルのディレクトリ
attachDir="添付ファイルの出力先" 			#添付ファイルの出力先

Find.find(inboxDir) {|fname|
	if File.file?(fname)
	    email=TMail::Mail.load(fname)
		if email.has_attachments?
		    email.attachments.each do |att|
				content = att.read
				decfname=""
				if att.original_filename[0..15].upcase == '=?ISO-2022-JP?B?' then
					att.original_filename.split(" ").each do |b64|
						b64.gsub!(/=\?ISO-2022-JP\?B\?/i, '')
						b64.gsub!(/\?=/, '')
						decfname+=NKF.nkf('-mB -s', b64)
					end
				else
					decfname = att.original_filename
				end
				file = attachDir + "\\" + File.basename(fname) + "_" + decfname

				print "Mail File Name      : " + fname + "\n"
				print "Attached File Name  : " + decfname + "\n"
				print "Attached File Output: " + file + "\n"

				File.open(file, 'wb') {|f|
					f.write content
				}
			end
		end
	end
}