From 79329c8e85a2e1bc9b3abb6f65fe4afdadec2d9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9gis=20Hanol?= Date: Wed, 30 Mar 2016 19:54:38 +0200 Subject: [PATCH] FIX: check we used the right encoding when parsing incoming emails --- lib/email/receiver.rb | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/email/receiver.rb b/lib/email/receiver.rb index 781ab91f41..f742733c6c 100644 --- a/lib/email/receiver.rb +++ b/lib/email/receiver.rb @@ -162,12 +162,13 @@ module Email return fixed if fixed.present? end - # 2) default to UTF-8 - try_to_encode(string, "UTF-8") + # 2) try most used encodings + try_to_encode(string, "UTF-8") || try_to_encode(string, "ISO-8859-1") end def try_to_encode(string, encoding) - string.encode("UTF-8", encoding) + encoded = string.encode("UTF-8", encoding) + encoded.present? && encoded.valid_encoding? ? encoded : nil rescue Encoding::InvalidByteSequenceError, Encoding::UndefinedConversionError, Encoding::ConverterNotFoundError