Adjust Channel::EmailParser#parse to try charset supplied in header (fixes #2167)
This commit is contained in:
parent
4ec3f1324d
commit
88938024cd
3 changed files with 64 additions and 1 deletions
|
@ -70,7 +70,7 @@ class Channel::EmailParser
|
||||||
=end
|
=end
|
||||||
|
|
||||||
def parse(msg)
|
def parse(msg)
|
||||||
mail = Mail.new(msg.utf8_encode)
|
mail = Mail.new(msg.utf8_encode(from: charset_from_headers_of(msg)))
|
||||||
|
|
||||||
message_attributes = [
|
message_attributes = [
|
||||||
{ mail_instance: mail },
|
{ mail_instance: mail },
|
||||||
|
@ -474,6 +474,13 @@ process unprocessable_mails (tmp/unprocessable_mail/*.eml) again
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
|
def charset_from_headers_of(msg)
|
||||||
|
Mail.new(msg.b)
|
||||||
|
.header['Content-Type']
|
||||||
|
.try(:parameters)
|
||||||
|
.try(:[], :charset)
|
||||||
|
end
|
||||||
|
|
||||||
def message_header_hash(mail)
|
def message_header_hash(mail)
|
||||||
imported_fields = mail.header.fields.map do |f|
|
imported_fields = mail.header.fields.map do |f|
|
||||||
value = begin
|
value = begin
|
||||||
|
|
40
test/data/mail/mail068.box
Normal file
40
test/data/mail/mail068.box
Normal 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>
|
16
test/data/mail/mail068.yml
Normal file
16
test/data/mail/mail068.yml
Normal 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
|
Loading…
Reference in a new issue