Adjust Channel::EmailParser#parse to try charset supplied in header (fixes #2167)

This commit is contained in:
Ryan Lue 2018-08-10 19:51:35 +08:00
parent 4ec3f1324d
commit 88938024cd
3 changed files with 64 additions and 1 deletions

View file

@ -70,7 +70,7 @@ class Channel::EmailParser
=end
def parse(msg)
mail = Mail.new(msg.utf8_encode)
mail = Mail.new(msg.utf8_encode(from: charset_from_headers_of(msg)))
message_attributes = [
{ mail_instance: mail },
@ -474,6 +474,13 @@ process unprocessable_mails (tmp/unprocessable_mail/*.eml) again
private
def charset_from_headers_of(msg)
Mail.new(msg.b)
.header['Content-Type']
.try(:parameters)
.try(:[], :charset)
end
def message_header_hash(mail)
imported_fields = mail.header.fields.map do |f|
value = begin

View file

@ -0,0 +1,40 @@
---- Original email message ----
Return-Path: xxxx@mail.xxxxx.cz
X-Kerio-Anti-Spam: Build: [Engines: 2.15.8.1150, Stamp: 3], Multi: [Enabled, t: (0.000007,0.003682)], BW: [Enabled, t: (0.000008)], RTDA: [Enabled, t: (0.048902), Hit: No, Details: v2.7.13; Id: 15.1i6ap3s.1cjtibnrd.2nhht], total: 0(700)
X-Spam-Status: No, hits=0.0 required=5.0
tests=KERIO_ANTI_SPAM: -0.000, BAYES_00: -1.665, HTML_MESSAGE: 0.001,
MIME_HEADER_CTYPE_ONLY: 0.717, MIME_HTML_ONLY: 0.723, TOTAL_SCORE: -0.224,autolearn=no
X-Spam-Level:
Received: from mail.xxxxx.cz ([xxx.168.xxx.xxx])
by mail.xxxxxx.cz with ESMTP
for helpdesk@xxxxxx.cz;
Thu, 2 Aug 2018 16:58:16 +0200
Received: by mail.xxxxx.cz (Postfix, from userid 500)
id 58E7387959; Thu, 2 Aug 2018 16:58:28 +0200 (CEST)
To: helpdek@xxxxx.cz
Subject: Contact from Server
X-PHP-Originating-Script: 500:kontact-info.inc.php
From: xxxxx@xxxxx.cz
Content-Type: text/html; charset="Windows-1250"
Message-Id: 20180802145828.58E7387959@mail.xxxxxx.cz
Date: Thu, 2 Aug 2018 16:58:28 +0200 (CEST)
Contact form
Odeslano dne: Ètvrtek 2. srpna 2018 16:58.28
Uzivatel:
Jmeno: Peter
E-mail: xxxxx@xxxxxx.cz
Problem: jine
<html>
<body><center><span style="color: #C0C0C0; font-family: Arial; font-size: 15pt;">Contact form</span></center><br><br><span style="font-family: Arial; font-size: 10pt;">
Odeslano dne: Ètvrtek 2. srpna 2018 16:58.28<br><br>
Uzivatel: <b></b><br>
Jmeno: <b>Peter</b><br>
E-mail: <b>xxxxx@xxxxx.cz</b><br>
Problem: <b>jine</b><br><br>
Text: <b>Po zavolání uvádí, že garáž není jeho, ale strýce. Dále již nezvedá telefon a na SMS zprávy neodpovídá. Když jsem dojel na místo a zazvonil. Jsem pøesvìdèen, že tato osoba vyvíjí èinnost v oblasti nemovitostí. Dále mlžení a zapírání své osoby coby statutárního orgánu spoleènosti, kterou zastupuje, nesvìdèí o seriozním jednání, ale spíše o protiprávním. Jeho jednáním mi mimo jiné vznikly zbyteèné finanèní náklady a èas</b>
<br>
</span></body></html>

View file

@ -0,0 +1,16 @@
--- !ruby/hash:ActiveSupport::HashWithIndifferentAccess
from: xxxxx@xxxxx.cz
from_email: xxxxx@xxxxx.cz
from_display_name: ''
subject: Contact from Server
to: helpdek@xxxxx.cz
body: 'Contact form Odeslano dne: Čtvrtek 2. srpna 2018 16:58.28 Uzivatel: Jmeno:
Peter E-mail: xxxxx@xxxxxx.cz Problem: jine Contact form<br><br> Odeslano dne: Čtvrtek
2. srpna 2018 16:58.28<br><br> Uzivatel: <br> Jmeno: <b>Peter</b><br> E-mail: <b>xxxxx@xxxxx.cz</b><br>
Problem: <b>jine</b><br><br> Text: <b>Po zavolání uvádí, že garáž není jeho, ale
strýce. Dále již nezvedá telefon a na SMS zprávy neodpovídá. Když jsem dojel na
místo a zazvonil. Jsem přesvědčen, že tato osoba vyvíjí činnost v oblasti nemovitostí.
Dále mlžení a zapírání své osoby coby statutárního orgánu společnosti, kterou zastupuje,
nesvědčí o seriozním jednání, ale spíše o protiprávním. Jeho jednáním mi mimo jiné
vznikly zbytečné finanční náklady a čas</b>'
content_type: text/html