--- app/models/mail_handler.rb.orig 2013-04-16 15:27:49.037508687 +0200 +++ app/models/mail_handler.rb 2013-06-03 16:29:44.457817160 +0200 @@ -180,8 +180,8 @@ # add To and Cc as watchers before saving so the watchers can reply to Redmine add_watchers(issue) - issue.save! add_attachments(issue) + issue.save! logger.info "MailHandler: issue ##{issue.id} created by #{user}" if logger && logger.info issue end @@ -253,10 +253,12 @@ def add_attachments(obj) if email.attachments && email.attachments.any? + part = email.text_part || email.html_part || email email.attachments.each do |attachment| + logger.info "MailHandler: attachment found" obj.attachments << Attachment.create(:container => obj, :file => attachment.decoded, - :filename => attachment.filename, + :filename => Redmine::CodesetUtil.to_utf8(attachment.filename, part.charset), :author => user, :content_type => attachment.mime_type) end @@ -378,7 +380,9 @@ end def cleaned_up_subject - subject = email.subject.to_s + part = email.text_part || email.html_part || email + subject = email.subject + subject = Redmine::CodesetUtil.to_utf8(subject, part.charset) subject.strip[0,255] end @@ -426,6 +430,8 @@ addr, name = from, nil if m = from.match(/^"?(.+?)"?\s+<(.+@.+)>$/) addr, name = m[2], m[1] + part = email.text_part || email.html_part || email + name = Redmine::CodesetUtil.to_utf8(name, part.charset) end if addr.present? user = self.class.new_user_from_attributes(addr, name)