FIX: properly handle attachments in received emails

This regressed in 1ac3e547 when we added support for eml attachments.
This commit is contained in:
Régis Hanol 2019-01-25 19:13:34 +01:00
parent 0fa9c68d47
commit db76e5a368
3 changed files with 1821 additions and 5 deletions

View File

@ -931,18 +931,20 @@ module Email
end
def attachments
# strip blacklisted attachments (mostly signatures)
@attachments ||= begin
attachments = @mail.parts.select { |part| part.attachment? && is_whitelisted_attachment?(part) }
attachments = @mail.attachments.select { |attachment| is_whitelisted_attachment?(attachment) }
attachments << @mail if @mail.attachment? && is_whitelisted_attachment?(@mail)
@mail.parts.each do |part|
attachments << part if part.attachment? && is_whitelisted_attachment?(part)
end
attachments
end
end
def create_post_with_attachments(options = {})
# deal with attachments
options[:raw] = add_attachments(options[:raw], options[:user], options)
create_post(options)
end

View File

@ -522,10 +522,14 @@ describe Email::Receiver do
end
it "supports attachments" do
SiteSetting.authorized_extensions = "txt"
SiteSetting.authorized_extensions = "txt|jpg"
expect { process(:attached_txt_file) }.to change { topic.posts.count }
expect(topic.posts.last.raw).to match(/<a\sclass='attachment'[^>]*>text\.txt<\/a>/)
expect(topic.posts.last.uploads.length).to eq 1
expect { process(:apple_mail_attachment) }.to change { topic.posts.count }
expect(topic.posts.last.raw).to match /<img.+?src="\/uploads\/default\/original\//
expect(topic.posts.last.uploads.length).to eq 1
end
it "supports eml attachments" do

File diff suppressed because it is too large Load Diff