From RHLUG
#!/usr/bin/ruby
require 'mailread'
require 'cgi'
@dirs = Dir.glob("#{ENV['HOME']}/mail/**/new")
#@dirs = Dir.glob("#{ENV['HOME']}/mail/misc/new")
def debug(msg)
#puts msg
end
def alert(path)
mail=Mail.new(path)
subj = CGI.escapeHTML(mail.header['Subject'])
from = CGI.escapeHTML(mail.header['From'])
body = mail.body.reject {|l| l =~ /^(Content-|--|\s*$)/ }
body = CGI.escapeHTML("\n"+body.join)[0..60] + "..."
#body = CGI.escapeHTML(mail.body.join)[0..60] + "..."
debug "alerting [#{subj}] [#{from}\n#{body}]"
system("notify-send", "#{subj}", "#{from}\n#{body}")
end
debug "Dirs:"
dirs = @dirs.map{|name|
debug "\t#{name}"
dir = {}
dir[:fd] = Dir.new(name)
dir[:cache] = []
dir[:fd].each{|message|
debug "\t\t#{message}"
dir[:cache] << message
}
dir
}
debug "Staring main loop"
while true
dirs.each {|dir|
debug "checking #{dir[:fd].path}"
dir[:fd].each{|message|
next if message =~ /^\.*$/
debug "\t#{message}"
if !dir[:cache].include?(message)
debug "\tNEW: #{message}"
alert(dir[:fd].path + "/" + message)
dir[:cache] << message
end
}
}
sleep 1
end