diff options
author | David Cabo <david@calibea.com> | 2011-09-19 15:01:12 +0200 |
---|---|---|
committer | David Cabo <david@calibea.com> | 2011-09-19 15:01:12 +0200 |
commit | 6f7d9187d6d851e4e26c7f0c494d87d56c664834 (patch) | |
tree | 95054ac1fca7550b62376a5730d34e98342c4b53 /script/handle-mail-replies | |
parent | ac450ac508f1b7e3db5bb7a6162b182531c1cdaa (diff) | |
parent | b7544ee519c05240127b65e2bf5adfc99e9bc3ec (diff) |
Merge branch 'develop' of github.com:sebbacon/alaveteli into develop
Diffstat (limited to 'script/handle-mail-replies')
-rwxr-xr-x | script/handle-mail-replies | 33 |
1 files changed, 27 insertions, 6 deletions
diff --git a/script/handle-mail-replies b/script/handle-mail-replies index 93cdc8cfd..9b1fb5b29 100755 --- a/script/handle-mail-replies +++ b/script/handle-mail-replies @@ -17,12 +17,19 @@ load "config.rb" MySociety::Config.set_file(File.join($alaveteli_dir, 'config', 'general'), true) MySociety::Config.load_default +$:.push(File.join($alaveteli_dir, "vendor", "rails", "actionmailer", "lib", "action_mailer", "vendor", "tmail-1.2.7")) +require 'tmail' + def main(in_test_mode) Dir.chdir($alaveteli_dir) do - load_rails - raw_message = $stdin.read - message = TMail::Mail.parse(raw_message) + begin + message = TMail::Mail.parse(raw_message) + rescue + # Error parsing message. Just pass it on, to be on the safe side. + forward_on(raw_message) unless in_test_mode + return 0 + end pfas = permanently_failed_addresses(message) if !pfas.empty? @@ -93,16 +100,29 @@ end def is_oof?(message) # Check for out-of-office + if message.header_string("X-POST-MessageClass") == "9; Autoresponder" + return true + end + + subject = message.header_string("Subject").downcase if message.header_string("Return-Path") == "<>" - subject = message.header_string("Subject") - if subject.start_with? "Out of Office: " + if subject.start_with? "out of office: " return true end - if subject.start_with? "Automatic reply: " + if subject.start_with? "automatic reply: " return true end end + if subject.start_with? "out of office autoreply:" + return true + end + if subject == "out of office" + return true + end + if subject.end_with? "is out of the office" + return true + end return false end @@ -120,6 +140,7 @@ def load_rails end def record_bounce(email_address, bounce_message) + load_rails User.record_bounce_for_email(email_address, bounce_message) end |