aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/mail_handler/backends/mail_extensions.rb5
-rw-r--r--lib/tasks/temp.rake22
2 files changed, 26 insertions, 1 deletions
diff --git a/lib/mail_handler/backends/mail_extensions.rb b/lib/mail_handler/backends/mail_extensions.rb
index 322c49bb5..6d6a20f8c 100644
--- a/lib/mail_handler/backends/mail_extensions.rb
+++ b/lib/mail_handler/backends/mail_extensions.rb
@@ -78,7 +78,10 @@ module Mail
# invalid character at the end of the string, even
# with UTF-8//IGNORE:
# http://po-ru.com/diary/fixing-invalid-utf-8-in-ruby-revisited/
- str = Iconv.conv('UTF-8//IGNORE', fix_encoding(encoding), str + " ")[0...-4]
+ begin
+ str = Iconv.conv('UTF-8//IGNORE', fix_encoding(encoding), str + " ")[0...-4]
+ rescue Iconv::InvalidEncoding
+ end
end
str
end
diff --git a/lib/tasks/temp.rake b/lib/tasks/temp.rake
index 35ae442c7..fcabb23de 100644
--- a/lib/tasks/temp.rake
+++ b/lib/tasks/temp.rake
@@ -7,6 +7,28 @@ namespace :temp do
user.save! unless dryrun
end
+ desc "Re-extract any missing cached attachments"
+ task :reextract_missing_attachments, [:commit] => :environment do |t, args|
+ dry_run = args.commit.nil? || args.commit.empty?
+ total_messages = 0
+ messages_to_reparse = 0
+ IncomingMessage.find_each :include => :foi_attachments do |im|
+ reparse = im.foi_attachments.any? { |fa| ! File.exists? fa.filepath }
+ total_messages += 1
+ messages_to_reparse += 1 if reparse
+ if total_messages % 1000 == 0
+ puts "Considered #{total_messages} received emails."
+ end
+ unless dry_run
+ im.parse_raw_email! true if reparse
+ sleep 2
+ end
+ end
+ message = dry_run ? "Would reparse" : "Reparsed"
+ message += " #{messages_to_reparse} out of #{total_messages} received emails."
+ puts message
+ end
+
desc 'Cleanup accounts with a space in the email address'
task :clean_up_emails_with_spaces => :environment do
dryrun = ENV['DRYRUN'] == '0' ? false : true