From e2bb08e8eae3ef631a7ccdebdcc967fef57ac079 Mon Sep 17 00:00:00 2001 From: sghebuz Date: Thu, 24 Mar 2016 16:05:10 +0100 Subject: [PATCH 1/2] Improve mail subject cleanup (localized reply and forwarded prefix) --- script/import_scripts/mbox.rb | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/script/import_scripts/mbox.rb b/script/import_scripts/mbox.rb index 7e93c9e5c68..6ad01ea6748 100755 --- a/script/import_scripts/mbox.rb +++ b/script/import_scripts/mbox.rb @@ -95,7 +95,28 @@ class ImportScripts::Mbox < ImportScripts::Base end def clean_title(title) - title.gsub(/^Re: */i, '') + #Strip mailing list name from subject + title = title.gsub(/\[[^\]]+\]+/, '').strip + + original_length = title.length + + #Strip Reply prefix from title (Standard and localized) + title = title.gsub(/^Re: */i, '') + title = title.gsub(/^R: */i, '') #Italian + title = title.gsub(/^RIF: */i, '') #Italian + + #Strip Forward prefix from title (Standard and localized) + title = title.gsub(/^Fwd: */i, '') + title = title.gsub(/^I: */i, '') #Italian + + title.strip + + #In case of mixed localized prefixes there could be many of them if the mail client didn't strip the localized ones + if original_length > title.length + clean_title(title) + else + title + end end def clean_raw(raw) @@ -156,7 +177,7 @@ class ImportScripts::Mbox < ImportScripts::Base raw = selected.force_encoding(selected.encoding).encode("UTF-8") - title = mail.subject.gsub(/\[[^\]]+\]+/, '').strip + title = mail.subject { id: t['id'], title: clean_title(title), From 94cd87bb7c561c29b3d903cb99af173262836728 Mon Sep 17 00:00:00 2001 From: sghebuz Date: Thu, 24 Mar 2016 16:05:58 +0100 Subject: [PATCH 2/2] Import attachments to topics/replies on mailing list import --- script/import_scripts/mbox.rb | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/script/import_scripts/mbox.rb b/script/import_scripts/mbox.rb index 6ad01ea6748..cf50d1aed91 100755 --- a/script/import_scripts/mbox.rb +++ b/script/import_scripts/mbox.rb @@ -179,6 +179,22 @@ class ImportScripts::Mbox < ImportScripts::Base title = mail.subject + # import the attachments + mail.attachments.each do |attachment| + tmp = Tempfile.new("discourse-email-attachment") + begin + # read attachment + File.open(tmp.path, "w+b") { |f| f.write attachment.body.decoded } + # create the upload for the user + upload = Upload.create_for(user_id_from_imported_user_id(mail.from.first) || Discourse::SYSTEM_USER_ID, tmp, attachment.filename, tmp.size ) + if upload && upload.errors.empty? + raw << "\n\n#{receiver.attachment_markdown(upload)}\n\n" + end + ensure + tmp.try(:close!) rescue nil + end + end + { id: t['id'], title: clean_title(title), user_id: user_id_from_imported_user_id(mail.from.first) || Discourse::SYSTEM_USER_ID, @@ -218,6 +234,22 @@ class ImportScripts::Mbox < ImportScripts::Base selected = receiver.select_body raw = selected.force_encoding(selected.encoding).encode("UTF-8") + # import the attachments + mail.attachments.each do |attachment| + tmp = Tempfile.new("discourse-email-attachment") + begin + # read attachment + File.open(tmp.path, "w+b") { |f| f.write attachment.body.decoded } + # create the upload for the user + upload = Upload.create_for(user_id_from_imported_user_id(mail.from.first) || Discourse::SYSTEM_USER_ID, tmp, attachment.filename, tmp.size ) + if upload && upload.errors.empty? + raw << "\n\n#{receiver.attachment_markdown(upload)}\n\n" + end + ensure + tmp.try(:close!) rescue nil + end + end + { id: id, topic_id: topic_id, user_id: user_id_from_imported_user_id(mail.from.first) || Discourse::SYSTEM_USER_ID,