diff --git a/lib/email/receiver.rb b/lib/email/receiver.rb index d28b0807e76..a66c8cf0302 100644 --- a/lib/email/receiver.rb +++ b/lib/email/receiver.rb @@ -1044,7 +1044,7 @@ module Email # create the upload for the user opts = { for_group_message: options[:is_group_message] } upload = UploadCreator.new(tmp, attachment.filename, opts).create_for(user.id) - if upload&.valid? + if upload.errors.empty? # try to inline images if attachment.content_type&.start_with?("image/") if raw[attachment.url] diff --git a/spec/components/email/receiver_spec.rb b/spec/components/email/receiver_spec.rb index 3c31a858722..ca7b9257a6e 100644 --- a/spec/components/email/receiver_spec.rb +++ b/spec/components/email/receiver_spec.rb @@ -597,6 +597,14 @@ describe Email::Receiver do MD end + it "works with removed attachments" do + SiteSetting.authorized_extensions = "jpg" + + expect { process(:removed_attachments) }.to change { topic.posts.count } + post = topic.posts.last + expect(post.uploads).to be_empty + end + it "supports eml attachments" do SiteSetting.authorized_extensions = "eml" expect { process(:attached_eml_file) }.to change { topic.posts.count } diff --git a/spec/fixtures/emails/removed_attachments.eml b/spec/fixtures/emails/removed_attachments.eml new file mode 100644 index 00000000000..82e79e2dacc --- /dev/null +++ b/spec/fixtures/emails/removed_attachments.eml @@ -0,0 +1,53 @@ +Return-Path: +From: Foo Bar +To: reply+4f97315cc828096c9cb34c6f1a0d6fe8@bar.com +Date: Sat, 30 Jan 2016 01:10:11 +0100 +Message-ID: <38@foo.bar.mail> +Content-type: multipart/related; boundary="_005_DM6PR06MB4524E804AE530DBCAB62D8D2EE780DM6PR06MB4524namp_"; type="multipart/alternative" +MIME-version: 1.0 + +--_005_DM6PR06MB4524E804AE530DBCAB62D8D2EE780DM6PR06MB4524namp_ +Content-Type: multipart/alternative; boundary="_000_DM6PR06MB4524E804AE530DBCAB62D8D2EE780DM6PR06MB4524namp_" + +--_000_DM6PR06MB4524E804AE530DBCAB62D8D2EE780DM6PR06MB4524namp_ +Content-Type: text/html; charset="utf-8" +Content-Transfer-Encoding: base64 + +PGh0bWwgeG1sbnM6dj0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTp2bWwiIHhtbG5zOm89InVy +bjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOm9mZmljZSIgeG1sbnM6dz0idXJuOnNjaGVt +YXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6d29yZCIgeG1sbnM6bT0iaHR0cDovL3NjaGVtYXMubWlj +cm9zb2Z0LmNvbS9vZmZpY2UvMjAwNC8xMi9vbW1sIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv +VFIvUkVDLWh0bWw0MCI+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNv +bnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+CjxtZXRhIG5hbWU9IkdlbmVyYXRvciIg +Y29udGVudD0iTWljcm9zb2Z0IFdvcmQgMTUgKGZpbHRlcmVkIG1lZGl1bSkiPgo8L2hlYWQ+Cjxi +b2R5IGxhbmc9IkVOLVVTIiBsaW5rPSJibHVlIiB2bGluaz0icHVycGxlIj4KPGRpdiBjbGFzcz0i +V29yZFNlY3Rpb24xIj4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImJvcmRlcjpz +b2xpZCB3aW5kb3d0ZXh0IDEuMHB0O3BhZGRpbmc6MGluIj48aW1nIGJvcmRlcj0iMCIgd2lkdGg9 +IjEwMCIgaGVpZ2h0PSIxMDAiIHN0eWxlPSJ3aWR0aDoxLjA0MTZpbjtoZWlnaHQ6MS4wNDE2aW4i +IGlkPSJfeDAwMDBfaTEwMjciIHNyYz0iY2lkOn5XUkQzNDkuanBnIiBhbHQ9IkltYWdlIHJlbW92 +ZWQgYnkgc2VuZGVyLiI+PC9zcGFuPjxvOnA+PC9vOnA+PC9wPgo8cCBjbGFzcz0iTXNvTm9ybWFs +Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7SGVsdmV0aWNhJnF1b3Q7LHNhbnMtc2Vy +aWY7Ym9yZGVyOnNvbGlkIHdpbmRvd3RleHQgMS4wcHQ7cGFkZGluZzowaW4iPjxpbWcgd2lkdGg9 +IjQ1IiBoZWlnaHQ9IjQ1IiBzdHlsZT0id2lkdGg6LjQ2ODdpbjtoZWlnaHQ6LjQ2ODdpbiIgaWQ9 +Il94MDAwMF9pMTAyNSIgc3JjPSJjaWQ6aW1hZ2UwMDEuanBnQDAxRDU5NTYxLkIxMjQ0QzEwIiBh +bHQ9IkltYWdlIHJlbW92ZWQgYnkgc2VuZGVyLiI+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZh +bWlseTomcXVvdDtIZWx2ZXRpY2EmcXVvdDssc2Fucy1zZXJpZiI+PG86cD48L286cD48L3NwYW4+ +PC9wPgo8L2Rpdj4KPC9ib2R5Pgo8L2h0bWw+ +--_000_DM6PR06MB4524E804AE530DBCAB62D8D2EE780DM6PR06MB4524namp_-- +--_005_DM6PR06MB4524E804AE530DBCAB62D8D2EE780DM6PR06MB4524namp_ +Content-Type: image/jpeg; name="~WRD349.jpg" +Content-Description: ~WRD349.jpg +Content-Disposition: inline; filename="~WRD349.jpg"; size=823; creation-date="Thu, 07 Nov 2019 17:48:28 GMT"; modification-date="Thu, 07 Nov 2019 17:48:28 GMT" +Content-ID: <~WRD349.jpg> +Content-Transfer-Encoding: base64 + + +--_005_DM6PR06MB4524E804AE530DBCAB62D8D2EE780DM6PR06MB4524namp_ +Content-Type: image/jpeg; name="image001.jpg" +Content-Description: image001.jpg +Content-Disposition: inline; filename="image001.jpg"; size=359; creation-date="Thu, 07 Nov 2019 17:51:31 GMT"; modification-date="Thu, 07 Nov 2019 17:51:31 GMT" +Content-ID: +Content-Transfer-Encoding: base64 + + +--_005_DM6PR06MB4524E804AE530DBCAB62D8D2EE780DM6PR06MB4524namp_--