From e4b9f72f9ed84e4cb7d95befe435768c33a295fd Mon Sep 17 00:00:00 2001
From: Guo Xiang Tan <tgx_world@hotmail.com>
Date: Thu, 27 Apr 2017 16:49:21 +0800
Subject: [PATCH] FIX: Force the right encoding when handling email.

---
 app/controllers/admin/email_controller.rb | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/app/controllers/admin/email_controller.rb b/app/controllers/admin/email_controller.rb
index df43323926c..455a22151e7 100644
--- a/app/controllers/admin/email_controller.rb
+++ b/app/controllers/admin/email_controller.rb
@@ -84,7 +84,20 @@ class Admin::EmailController < Admin::AdminController
 
   def handle_mail
     params.require(:email)
-    Jobs.enqueue(:process_email, mail: params[:email], retry_on_rate_limit: true)
+    retry_count = 0
+
+    begin
+      Jobs.enqueue(:process_email, mail: params[:email], retry_on_rate_limit: true)
+    rescue JSON::GeneratorError => e
+      if retry_count == 0
+        params[:email] = params[:email].force_encoding('iso-8859-1').encode("UTF-8")
+        retry_count += 1
+        retry
+      else
+        raise e
+      end
+    end
+
     render plain: "email has been received and is queued for processing"
   end