From c6fac68ccdb8d87b5688bc17e852c6ba86ad9b81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9gis=20Hanol?= Date: Tue, 30 Jan 2018 23:47:58 +0100 Subject: [PATCH] FIX: don't blow up on badly encoding incoming email body --- app/serializers/incoming_email_details_serializer.rb | 9 +++++++-- config/locales/server.en.yml | 2 ++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/app/serializers/incoming_email_details_serializer.rb b/app/serializers/incoming_email_details_serializer.rb index d147215a393..f67f9fcb1e8 100644 --- a/app/serializers/incoming_email_details_serializer.rb +++ b/app/serializers/incoming_email_details_serializer.rb @@ -33,14 +33,19 @@ class IncomingEmailDetailsSerializer < ApplicationSerializer end def subject - @mail.subject.presence || "(no subject)" + @mail.subject.presence || I18n.t("emails.incoming.no_subject") end def body body = @mail.text_part.decoded rescue nil body ||= @mail.html_part.decoded rescue nil body ||= @mail.body.decoded rescue nil - body.strip.truncate_words(100, escape: false) + + return I18n.t("emails.incoming.no_body") if body.blank? + + body.encode("utf-8", invalid: :replace, undef: :replace, replace: "") + .strip + .truncate_words(100, escape: false) end end diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml index d4c9a8a0276..7b162be31ee 100644 --- a/config/locales/server.en.yml +++ b/config/locales/server.en.yml @@ -63,6 +63,8 @@ en: default_subject: "This topic needs a title" show_trimmed_content: "Show trimmed content" maximum_staged_user_per_email_reached: "Reached maximum number of staged users created per email." + no_subject: "(no subject)" + no_body: "(no body)" errors: empty_email_error: "Happens when the raw mail we received was blank." no_message_id_error: "Happens when the mail has no 'Message-Id' header."