mirror of
https://github.com/redmine/redmine.git
synced 2025-11-05 04:45:57 +01:00
Empty email attachments are imported to Redmine, creating broken DB records (#27885).
Patch by Felix Schäfer. git-svn-id: http://svn.redmine.org/redmine/trunk@17147 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
@@ -296,6 +296,7 @@ class MailHandler < ActionMailer::Base
|
||||
if email.attachments && email.attachments.any?
|
||||
email.attachments.each do |attachment|
|
||||
next unless accept_attachment?(attachment)
|
||||
next unless attachment.body.decoded.size > 0
|
||||
obj.attachments << Attachment.create(:container => obj,
|
||||
:file => attachment.body.decoded,
|
||||
:filename => attachment.filename,
|
||||
|
||||
58
test/fixtures/mail_handler/ticket_with_empty_attachment.eml
vendored
Normal file
58
test/fixtures/mail_handler/ticket_with_empty_attachment.eml
vendored
Normal file
@@ -0,0 +1,58 @@
|
||||
Return-Path: <jsmith@somenet.foo>
|
||||
Received: from osiris ([127.0.0.1])
|
||||
by OSIRIS
|
||||
with hMailServer ; Sat, 21 Jun 2008 15:53:25 +0200
|
||||
Message-ID: <002301c8d3a6$2cdf6950$0a00a8c0@osiris>
|
||||
From: "John Smith" <jsmith@somenet.foo>
|
||||
To: <redmine@somenet.foo>
|
||||
Subject: Ticket created by email with attachment
|
||||
Date: Sat, 21 Jun 2008 15:53:25 +0200
|
||||
MIME-Version: 1.0
|
||||
Content-Type: multipart/mixed;
|
||||
boundary="----=_NextPart_000_001F_01C8D3B6.F05C5270"
|
||||
X-Priority: 3
|
||||
X-MSMail-Priority: Normal
|
||||
X-Mailer: Microsoft Outlook Express 6.00.2900.2869
|
||||
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869
|
||||
|
||||
This is a multi-part message in MIME format.
|
||||
|
||||
------=_NextPart_000_001F_01C8D3B6.F05C5270
|
||||
Content-Type: multipart/alternative;
|
||||
boundary="----=_NextPart_001_0020_01C8D3B6.F05C5270"
|
||||
|
||||
|
||||
------=_NextPart_001_0020_01C8D3B6.F05C5270
|
||||
Content-Type: text/plain;
|
||||
charset="iso-8859-1"
|
||||
Content-Transfer-Encoding: quoted-printable
|
||||
|
||||
This is a new ticket with attachments
|
||||
------=_NextPart_001_0020_01C8D3B6.F05C5270
|
||||
Content-Type: text/html;
|
||||
charset="iso-8859-1"
|
||||
Content-Transfer-Encoding: quoted-printable
|
||||
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<HTML><HEAD>
|
||||
<META http-equiv=3DContent-Type content=3D"text/html; =
|
||||
charset=3Diso-8859-1">
|
||||
<META content=3D"MSHTML 6.00.2900.2883" name=3DGENERATOR>
|
||||
<STYLE></STYLE>
|
||||
</HEAD>
|
||||
<BODY bgColor=3D#ffffff>
|
||||
<DIV><FONT face=3DArial size=3D2>This is a new ticket with=20
|
||||
attachments</FONT></DIV></BODY></HTML>
|
||||
|
||||
------=_NextPart_001_0020_01C8D3B6.F05C5270--
|
||||
|
||||
------=_NextPart_000_001F_01C8D3B6.F05C5270
|
||||
Content-Type: application/json;
|
||||
name="response.json"
|
||||
Content-Transfer-Encoding: base64
|
||||
Content-Disposition: attachment;
|
||||
filename="response.json"
|
||||
|
||||
|
||||
------=_NextPart_000_001F_01C8D3B6.F05C5270--
|
||||
|
||||
@@ -631,6 +631,14 @@ class MailHandlerTest < ActiveSupport::TestCase
|
||||
assert_equal content, File.read(attachment.diskfile).force_encoding('CP852')
|
||||
end
|
||||
|
||||
def test_empty_attachment_should_not_be_imported
|
||||
issue = submit_email(
|
||||
'ticket_with_empty_attachment.eml',
|
||||
issue: { project: 'ecookbook' }
|
||||
)
|
||||
assert_equal 0, issue.attachments.size
|
||||
end
|
||||
|
||||
def test_multiple_inline_text_parts_should_be_appended_to_issue_description
|
||||
issue = submit_email('multiple_text_parts.eml', :issue => {:project => 'ecookbook'})
|
||||
assert_include 'first', issue.description
|
||||
|
||||
Reference in New Issue
Block a user