Importing mbox files fails at creating topics with Chinese characters due to invalid byte sequence


(Yaw Anokwa) #1

I am using Discourse v1.8.0.beta12 +34 and I’ve used Icy’s Google Group Crawler to generate mboxes of the various Google Groups I’m importing into Discourse. I’ve successfully imported a couple of groups, but I’ve run into an issue where the script errors with this message.

creating forum topics
     1359 / 5133 ( 26.5%)  [53 items/min]  /usr/local/lib/ruby/gems/2.3.0/gems/activesupport-4.2.8/lib/active_support/core_ext/object/blank.rb:24:in `blank?': invalid byte sequence in UTF-8 (ArgumentError)
	from /usr/local/lib/ruby/gems/2.3.0/gems/activesupport-4.2.8/lib/active_support/core_ext/object/blank.rb:24:in `present?'
	from /var/www/discourse/lib/email/receiver.rb:238:in `try_to_encode'
	from /var/www/discourse/lib/email/receiver.rb:229:in `block in fix_charset'
	from /var/www/discourse/lib/email/receiver.rb:228:in `each'
	from /var/www/discourse/lib/email/receiver.rb:228:in `fix_charset'
	from /var/www/discourse/lib/email/receiver.rb:184:in `select_body'
	from mbox.rb:426:in `block (2 levels) in create_forum_topics'
	from /var/www/discourse/script/import_scripts/base.rb:432:in `block in create_posts'
	from /var/www/discourse/script/import_scripts/base.rb:431:in `each'
	from /var/www/discourse/script/import_scripts/base.rb:431:in `create_posts'
	from mbox.rb:419:in `block in create_forum_topics'
	from /var/www/discourse/script/import_scripts/base.rb:784:in `block in batches'
	from /var/www/discourse/script/import_scripts/base.rb:783:in `loop'
	from /var/www/discourse/script/import_scripts/base.rb:783:in `batches'
	from mbox.rb:413:in `create_forum_topics'
	from mbox.rb:57:in `execute'
	from /var/www/discourse/script/import_scripts/base.rb:45:in `perform'
	from mbox.rb:555:in `<top (required)>'
	from googlegroup.rb:51:in `load'
	from googlegroup.rb:51:in `import_to_discourse'
	from googlegroup.rb:73:in `<main>'

I know this isn’t the most useful bug report and I’d love the community’s help in making it more useful. My guess is that there is some Unicode character that is the problem, but I don’t have a good idea on how I output what topic or mbox file is causing the problem…


(Régis Hanol) #2

Would you be able to share the email #1359?


(Yaw Anokwa) #3

Do you know how I map from topic number to the message?

Maybe some debug code that I can shove in /var/www/discourse/script/import_scripts/base.rb?


(Régis Hanol) #4

Looks like the query is

  SELECT msg_id, from_email, from_name, title, email_date, message, category
    FROM emails
   WHERE reply_to IS NULL
ORDER BY DATE(email_date)

So you should be able to get the #1359 with

  SELECT msg_id, from_email, from_name, title, email_date, message, category
    FROM emails
   WHERE reply_to IS NULL
ORDER BY DATE(email_date)
   LIMIT 1
  OFFSET 1358

+/- 1 because counting is hard :wink:


(Yaw Anokwa) #6

Within the index.db that is generated by the mbox.rb file, I was able to use the following query to find the problematic emails.

select msg_id,title from emails where reply_to is null order by title desc;

The problematic messages were all spam messages that had titles like this:

阿里巴巴会员信息采集软件
请转交相关人员-19:21:01
羿茹惠
生产计划与物料控制
湖北十堰先锋模具股份有限公司
湖北分公司HR潘先生
文秘职业素养-田家轩

Grepping for the Subject line in the bad messages returned:

Subject: =?utf-8?B?576/6Iy55oOg?=
Subject: =?utf-8?B?d2FuZ3lvdXhpYW5nMjAwM++8jOivt+afpeaUtg==?=
Subject: =?utf-8?B?5rmW5YyX5Y2B5aCw5YWI6ZSL5qih5YW36IKh5Lu95pyJ6ZmQ5YWs5Y+4?=
Subject: =?utf-8?B?6K+36L2s5Lqk55u45YWz5Lq65ZGYLTE5OjIxOjAx?=
Subject: =?utf-8?B?5paH56eY6IGM5Lia57Sg5YW7LeeUsOWutui9qQ==?=
Subject: =?GB2312?B?yfqy+rzGu67T687vwc+/2NbG?=
Subject: =?GB2312?B?sKLA77DNsM274dSx0MXPorLJvK/I7bz+?=

I was able to grep for the msg_id in the mbox files, delete these spam messages, and the import worked fine.

I’m reporting this as a bug, because I think it’d be better if these unparseable messages were ignored by mbox.rb (maybe by looking for ?GB2312? or ?utf-8? in the subject line of the mbox) or actually parsed, since they look like standards-complaint emails.

Example 1

Received: by 10.42.74.200 with SMTP id x8mr6946785icj.32.1353289905609;
        Sun, 18 Nov 2012 17:51:45 -0800 (PST)
X-BeenThere: opendatakit@googlegroups.com
Received: by 10.50.150.145 with SMTP id ui17ls2424400igb.13.canary; Sun, 18
 Nov 2012 17:51:44 -0800 (PST)
Received: by 10.42.175.70 with SMTP id az6mr9130199icb.27.1353289904795;
        Sun, 18 Nov 2012 17:51:44 -0800 (PST)
Received: by 10.50.96.228 with SMTP id dv4msigb;
        Sun, 18 Nov 2012 10:01:18 -0800 (PST)
Received: by 10.42.25.147 with SMTP id a19mr8621609icc.14.1353261678163;
        Sun, 18 Nov 2012 10:01:18 -0800 (PST)
Received: by 10.42.25.147 with SMTP id a19mr8621607icc.14.1353261678154;
        Sun, 18 Nov 2012 10:01:18 -0800 (PST)
Return-Path: <823225@chenher2.net>
Received: from chenher2 ([125.124.228.237])
        by gmr-mx.google.com with ESMTP id x4si933110igm.0.2012.11.18.10.01.16;
        Sun, 18 Nov 2012 10:01:18 -0800 (PST)
Received-SPF: neutral (google.com: 125.124.228.237 is neither permitted nor denied by best guess record for domain of 823225@chenher2.net) client-ip=125.124.228.237;
Authentication-Results: gmr-mx.google.com; spf=neutral (google.com: 125.124.228.237 is neither permitted nor denied by best guess record for domain of 823225@chenher2.net) smtp.mail=823225@chenher2.net
Message-Id: <50a9226e.c42e320a.1382.3866SMTPIN_ADDED_MISSING@gmr-mx.google.com>
From: =?GB2312?B?sKLA78jtvP4=?= <823225@CHENHER2.net>
Subject: =?GB2312?B?sKLA77DNsM274dSx0MXPorLJvK/I7bz+?=
To: opendatakit@googlegroups.com
Content-Type: text/plain
Reply-To: info@sumwill.com
Date: Mon, 19 Nov 2012 02:01:02 +0800
X-Priority: 3
X-Library: Indy 9.00.10

һ��������Ͱͻ�Ա��Ϣ�ɼ������

ҵ��Ա�ĺð��֣����ٽ�����׼�ͻ���ݿ�

����ӵ��800��Ұ���Ͱͻ�Ա��ҵ������
������ٽ��������Լ���׼�ͻ���ݿ���
�������Լ��Ĺؼ�ʶ���׼�ͻ���ݿ���
�������׼�ͻ��������ʵʱ������
��һ�У�ֻ������꣬��������ӵ�С�

��ҵ�����ֻ���롢����������⵼����
������Ϊ����Ⱥ��������Ⱥ���ľ�׼��ݣ�

���������ַ��http://www.chinasum.net

 ͬ��������۴����Ա��Ϣ�ɼ����

ע������Ͱͻ�Ա��Ϣ�ɼ������Ϊ�й�վ�����վ�����汾

������������������������������������������������������������

������ �������������������

��ά���������������������������֩����������,��һ�׶��������������ϵͳ��
��ά����������������ɸ���Զ������ַ���������������Ż���վ���������桢
��ó��վ����ҵ��վ��רҵ��̳��С��������վ�����Խ�������������������Ѽ�
������Ч�����ʼ���ַ��

���������ַ��http://www.chinasum.net

������������������������������������������������������������

��Google����ɼ�����

 ͨ��Google.cn�����Ѽ�����Ŀ��ͻ��ʼ���ַ���ߡ�Google.cn��ݿ�����¼��ȫ
�������Ӣ����ҳ���������ʼ���ַ��ص��ַ�ɼ������������ʼ���ַ��������Щ
��ַ���ǻ�Ծ�ġ���Ч�ģ����м��ߵ��г�Ӫ���ֵ�����ͨ��һ���Ե�����ǧ������
�ؼ���б?�Զ���������ȡ�ʼ���ַ������ȫ���24Сʱ����...

���������ַ��http://www.chinasum.net

������������������������������������������������������������



��ά��˾��Ҫ��Ʒ�У�

1����άȫ����Ϣ�ɼ����
2������Ͱͻ�Ա��Ϣ�ɼ�������й�վ/���ģ�
3������Ͱͻ�Ա��Ϣ�ɼ���������վ/Ӣ�ģ�
4���۴����Ա��Ϣ�ɼ����
5��Google����������
6�������������������
7����ά�ֻ�����������

����QQ��6509805��4350575

��ϵ�绰��0573-88128335

��ά��˾��վ�� http://www.chinasum.net

������������������������������������������������������������������������������
����֮��������ԭ�£�лл��

Example 2

X-Received: by 10.13.213.207 with SMTP id x198mr3802009ywd.34.1446682144877;
        Wed, 04 Nov 2015 16:09:04 -0800 (PST)
X-BeenThere: opendatakit@googlegroups.com
Received: by 10.50.41.8 with SMTP id b8ls16225igl.9.canary; Wed, 04 Nov 2015
 16:09:01 -0800 (PST)
X-Received: by 10.68.129.165 with SMTP id nx5mr3742677pbb.1.1446682141524;
        Wed, 04 Nov 2015 16:09:01 -0800 (PST)
Received: by 10.50.66.230 with SMTP id i6msigt;
        Wed, 4 Nov 2015 15:46:23 -0800 (PST)
X-Received: by 10.140.235.193 with SMTP id g184mr3741159qhc.10.1446680782676;
        Wed, 04 Nov 2015 15:46:22 -0800 (PST)
Return-Path: <aboz@uoafoexam.org>
Received: from uoafoexam.org ([49.72.228.147])
        by gmr-mx.google.com with ESMTP id el2si413275pbb.0.2015.11.04.15.46.20
        for <opendatakit@googlegroups.com>;
        Wed, 04 Nov 2015 15:46:22 -0800 (PST)
Received-SPF: neutral (google.com: 49.72.228.147 is neither permitted nor denied by best guess record for domain of aboz@uoafoexam.org) client-ip=49.72.228.147;
Authentication-Results: gmr-mx.google.com;
       spf=neutral (google.com: 49.72.228.147 is neither permitted nor denied by best guess record for domain of aboz@uoafoexam.org) smtp.mailfrom=aboz@uoafoexam.org
Date: Thu, 5 Nov 2015 07:36:32 +0800
From: =?utf-8?B?576/6Iy55oOg?= <aboz@uoafoexam.org>
To: <opendatakit@googlegroups.com>
Subject: =?utf-8?B?576/6Iy55oOg?=
Message-ID: <20151105073637857305@uoafoexam.org>
X-mailer: Foxmail 5.0 [cn]
Mime-Version: 1.0
Content-Type: multipart/alternative;
	boundary="=====003_Dragon247736036105_====="

--=====003_Dragon247736036105_=====
Content-Type: text/plain;
	charset="utf-8"
Content-Transfer-Encoding: base64

b3BlbmRhdGFraXTvvJrmgqjlpb3vvIENCuOAiuW3peWOguWuieWFqOeOr+Wig+euoeeQhu+8iEVI
U++8ieWunuaImOOAiw0KDQrjgJDln7norq3ml7bpl7TjgJEyMDE15bm0MTHmnIgyMC0yMeS4iua1
tyAgMTHmnIgyOC0yOeiLj+W3niAxMuaciDE5LTIw5pelICDoi4/lt54NCuOAkOWfueiureWvueix
oeOAkeS8geS4mui0n+i0o+S6uuOAgeWuieWFqOWIhueuoemihuWvvOOAgeWuieWFqOeuoeeQhumD
qOmXqOi0n+i0o+S6uuOAgemDqOmXqOe7j+eQhuOAgeS4u+euoeetiQ0K44CQ5o6I6K++5pa55byP
44CR5qGI5L6L5YiG5Lqr44CB5a6e5Yqh5YiG5p6Q44CB5LqS5Yqo6K6o6K6644CB6aG555uu5qih
5ouf44CB5Z+56K6t5ri45oiPDQrjgJDln7norq3otLnnlKjjgJEzODAw5YWDL+S4pOWkqe+8iOWQ
q+S4pOWkqeS4remkkOOAgeaMh+WumuaVmeadkOOAgeiMtueCue+8iQ0K44CQ5YC854+t5omL5py6
44CRMDUxMi02ODcwMDY1MyAgIO+8iDDvvIkxODAxNTU5NjMyNw0KICDor77nqIvnroDku4sgPg0K
44CQ6K++56iL6IOM5pmv44CRDQrlhYjov5vnmoTlronlhajnrqHnkIbnu4/pqozlkYror4nmiJHk
u6zvvJrlronlhajnrqHnkIbmmK/kuIDkuKrlup7lpKfnmoTns7vnu5/vvIzpnIDopoHku47nianl
kozkurrkuKTkuKrnu7Tluqblh7rlj5HvvIwNCuacieWGs+etluWxgueahOmHjeinhuOAgeeuoeeQ
huWxgueahOaJp+ihjOOAgeWFqOWRmOWPguS4ju+8jOWvueWuieWFqOeUn+S6p+i/m+ihjOWFqOi/
h+eoi+euoeeQhu+8jOW5tuagkeeri+iHquS4iuiAjA0K5LiL55qE5a6J5YWo5LyY5YWI55CG5b+1
77yM5omN6IO955yf5q2j5a6e546w5LqL5pWF5o6n5Yi255qE55uu55qE44CCDQrov5nmmK/kuIDk
uKrpnZ7luLjnuq/nsrnnmoTor77nqIvvvIzlsIbpgJrov4flpKfph4/moYjkvovlkYror4nkvaDv
vIzlronlhajnrqHnkIbkvZPns7vkuI3ku4Xku4XnlKjkuo7lrqHmoLjvvIzmm7TlupQNCuivpeie
jeWFpeWFrOWPuOeahOato+W4uOi/kOiQpeS9k+ezu++8jOS4jeWGjeS4uuWRmOW3pemineWkluWi
nuWKoOi0n+aLhe+8jOi9u+advueahOaehOaetuS7peS6i+aVheaOp+WItuS4uuebrueahOeahA0K
57O757uf5a6J5YWo566h55CG5L2T57O744CCDQrjgJDln7norq3nm67nmoTjgJENCuS6huino+S6
i+aVheW9ouaIkOeahOi/h+eoi+S4juaOp+WItuWOn+eQhg0K5p6E5bu65oiQ54af44CB5a6e5pWI
55qE5a6J5YWo566h55CG5L2T57O7DQrmjozmj6Hln7rkuo7kuovmlYXpooTpmLLnmoTlronlhajn
rqHnkIblt6XlhbcNCuOAkOmAguWQiOatpOivvueoi+eahOS8geS4muOAkQ0K5bCa5pyq5bu656uL
5pyJ5pWI5a6J5YWo566h55CG5L2T57O755qE5LyB5LiaDQrkvZzkuJrpo47pmanovoPpq5jmiJbl
ronlhajkuovmlYXlpJrlj5HnmoTkvIHkuJoNCuWuieWFqOmakOaCo+aAu+aYr+S4jeiDveagueay
u+eahOS8geS4mg0K5oiQ5aWX5Yi25bqm5LiA5omn6KGM5bCx5Y+Y5qC377yM5pyq6IO95pyJ5pWI
5o6n5Yi25LqL5pWF55qE5LyB5LiaDQrlronlhajnrqHnkIblt6XkvZzml6Dms5Xmt7HlhaXliLDl
kITkuKrpg6jpl6jjgIHnj63nu4TjgIHlkZjlt6XkuK3nmoTkvIHkuJoNCg0KDQror77nqIvlpKfn
urINCuS4u+mimOS4gO+8muais+eQhuato+ehrueahOWuieWFqOaEj+ivhuS4juWuieWFqOeuoeeQ
hg0K5a6J5YWo55Sf5Lqn5Y+R5bGV54q25Ya15LiO5Lit5Zu95a6J5YWo55Sf5Lqn546w54q2DQrm
oYjkvovvvJrlronlhajkuovmlYXlr7nkvIHkuJrnmoTlvbHlk40NCuWbveWGheS8geS4mkVIU+eu
oeeQhueahOS6lOWkp+e8uumZtw0K5pe25Luj5ZG85ZSk5LiT5Lia5a6J5YWo566h55CG5Lq65ZGY
DQrlronlhajnrqHnkIbkurrlkZjkuI7pg6jpl6jnrqHnkIbogIXnmoTogYzotKPliIbphY0NCuah
iOS+i+eglOiuqO+8muS4reiNo+eIhueCuOahiOOAgeWunea6kOS4sOemveS4mueBq+eBvuS6i+aV
heWPkeWxleaooeWei+S4juS6i+aVhemihOmYsuWOn+eQhg0K5Li76aKY5LqM77ya5bel5Y6C5a6J
5YWo5rOV5b6L5rOV6KeE566h55CG77yM6KeE6YG/6L+d5rOV6aOO6ZmpDQrigJzplb/niZnigJ3n
moTlronlhajnlJ/kuqfms5XvvIzkvaDkuobop6PlpJrlsJENCuazleW+i+azleinhOWcqOWuieWF
qOS9k+ezu+S4reeahOS4ieWkp+S9nOeUqA0K5a6J5YWo55Sf5Lqn5rOV5b6L5rOV6KeE5Z+65pys
5p625p6EDQrlronlhajms5Xlvovms5Xop4TlnKjml6XluLjnrqHnkIbkuK3nmoTlhbjlnovpl67p
opjkuI7lupTlr7kNCuazleW+i+azleinhOeuoeeQhuWfuuacrOa1geeoiw0K54m56Imy77ya6YCC
55So5rOV5b6L5rOV6KeE6K+E5Lu35LiO5YWs5Y+45ZCI6KeE5oCn5a6h5qC4DQrkuLvpopjkuInv
vJrkvZzkuJrpo47pmannmoTns7vnu5/mjqfliLbmioDmnK8NCuWNsemZqea6kOi+qOivhuS4jueu
oeeQhueahOaEj+S5iQ0K5L2c5Lia5q2l6aqk5YiS5YiG5oqA5ben5LiO5LiJ56eN5pa55rOVDQrl
jbHpmanmupDovqjor4bnmoTkuKTnp43lrp7miJjmlrnms5UNCueJueiJsu+8mumHjeWkp+WNsemZ
qea6kOayu+eQhuWOn+WImQ0K5Y2x6Zmp5rqQ5rK755CG5oqA5pyv5YWz6ZSu6K+NDQrmnKzotKjl
ronlhajjgIHlt6XnqIvmioDmnK/ljp/liJnlnKjlronlhajnrqHnkIbkuK3nmoTov5DnlKgNCueJ
ueiJsu+8muKAnOS6lOmXruazleKAneWcqOWNsemZqea6kOW3peS9nOS4reeahOi/kOeUqA0K5Y2x
6Zmp5rqQ5rK755CG5a+5562W55qE5LqU6aG55Z+65pys6KaB5rGCDQrnibnoibLvvJrljbHpmanm
upDovqjor4bkuI7ns7vnu5/mjqfliLbmqKHlnovlm74NCuW4uOingeeahOOAgeS4jeaOqOiNkOea
hOWyl+S9jeS9nOS4muaMh+WvvOS5pg0K5a6J5YWo5L2c5Lia5oyH5a+85Lmm57yW5Yi25pa55rOV
DQrnm67op4bljJbnmoTkvZzkuJrvvJrlrp7njrDigJznnIvlvpfop4HnmoTnrqHnkIbigJ0NCua8
lOe7g++8muebruinhuWMluWcqOWuieWFqOeuoeeQhuS4reeahOi/kOeUqOaKgOW3pw0K5LiA54K5
5Z+65YeG5LiO5LiA54K55pWZ6IKy77yIT1BM77yJ55qE5a6e5pa96KaB6aKGDQrmvJTnu4PvvJrk
uIDngrnln7rlh4bnmoTnvJbliLYNCuS4u+mimOWbm++8muWuieWFqOS6i+aVheeahOWJjeWFhueu
oeeQhg0K5rW35Zug6YeM5biM5rOV5YiZ5LiO5LqL5pWF6aKE6Ziy5Y6f55CGDQrlpKfkuovmlYXn
moTkuInlpKfliY3lhYYNCuWPkeaOmOmakOaCo+eahOS4pOWkp+mAlOW+hA0K5byA5bGV5ZGY5bel
5Y+C5LiO55qE5LqL5pWF5YmN5YWG5Y+R5o6Y5rS75YqoDQrlronlhajmo4Dmn6XnmoTkuKTnp43m
lrnms5UNCueJueiJsu+8mk9JQ0FT5b+r6YCf6ZqQ5oKj5qOA5p+l5rOVDQrmvJTnu4PvvJrpmpDm
gqPmj4/ov7DnmoTmlrnlvI/vvIjlm6DkuLrigKbmiYDku6XigKbpgKDmiJDigKbvvIkNCuayu+eQ
humakOaCo+WJjeeahOWfuuacrOayn+mAmueahOmHjeimgeaApw0K54m56Imy77ya6ZqQ5oKj5rK7
55CG5LiO5YaN5Y+R6Ziy5q2i55qE5LiJ5Liq5a+5562WDQrpkojlr7nnrqHnkIbkurrlkZjnmoTm
oIflh4bmo4Dmn6XooajnvJbliLbnmoTkuKTkuKrkvp3mja7jgIHkuInpobnlhoXlrrkNCuWuieWF
qOajgOafpeS4juWPjemmiOi3n+i4quaWueazlQ0K54m56Imy77ya6KGM5Li65Lmg5oOv5YyW5LiO
5Lmg5oOv5oCn6L+d56ugDQrov53nq6DlkZjlt6XnmoTooYzkuLrnuqDmraPmlrnms5UNCueJueiJ
su+8muS5oOaDr+WIsOawm+WbtO+8jOW3peWOguWuieWFqOaWh+WMlueahOWbm+S4quatpemqpA0K
5Li76aKY5LqU77ya5LqL5pWF5bqU5oCl566h55CG5LiO6LCD5p+l5a+5562W77yIMC41aO+8iQ0K
5Lit5Zu95LyB5Lia55qE5bqU5oCl5L2T57O7546w54q25LiO5YW45Z6L6Zeu6aKYDQrlupTmgKXp
ooTmoYjnmoTmpoLlv7XkuI7moLjlv4PopoHntKANCuW3peWOguW6lOaApeS6i+aAgeWIhuaekOS4
jumihOahiOe8luWItuaWueazlQ0K5bqU5oCl6aKE5qGI5L2T57O755qE5LiJ5aSn57uE5oiQ6YOo
5YiGDQrnibnoibLvvJrlupTmgKXmlZHmj7TpooTmoYjnvJbliLblha3mraXpqqQNCumihOahiOa8
lOS5oOWHhuWkh+S4juWunuaWveaKgOW3pw0K5qGI5L6L77ya546w5Zy65aSE572u6aKE5qGI57yW
5Yi2DQrop4bpopHmoYjkvovvvJrkuIDpopfonrrkuJ3pkonkuI7kuovmlYXmiJDlm6ANCuS6i+aV
heWkmuWboOe0oOeQhuiuuuS4jui9qOi/ueS6pOWPieeQhuiuug0KNXdoeeazleWcqOS6i+aVheKA
nOa6kOKAneWboOWIhuaekOS4reeahOi/kOeUqA0K5Li76aKY5YWt77ya5bel5Y6C5a6J5YWo5Z+5
6K6t55qE5a6e5pa95oqA5benDQrlspfkvY3lronlhajln7norq3nmoTlrp7mlr3lm5vmraXms5UN
CuahiOS+i++8muWkp+W3tOi9puWPuOacuueahOWyl+S9jeWuieWFqOWfueiurQ0K5a6J5YWo5Z+5
6K6t5a+56LGh5Y+K5YW25Z+56K6t562W55WlDQrlronlhajln7norq3mlZnmnZDlvIDlj5HnmoTk
upTkuKrmraXpqqQNCuWuieWFqOWfueiureivvueoi+etluWIkuS4jue0oOadkOaVtOeQhuaKgOW3
pw0K5ben55So5qGI5L6L5byA5bGV5Z+56K6tDQrlt6fnlKjnu4/lhbjlj6XlvIDlsZXln7norq0N
CueOsOWcuuWunuaWveWuieWFqOWfueiureacgOacieaViA0K6KeG6aKR5pWZ5p2Q5Zyo5Z+56K6t
5Lit55qE5a6e6ZmF6L+Q55SoDQrkuLvpopjkuIPvvJrlt6XljoLlronlhajmlofljJblu7rorr7k
uI7lronlhajpooblr7zlipvmj5DljYcNCuWFrOWPuOWuieWFqOeuoeeQhueahOe7iOaegeebruag
h++8muS8geS4muaWh+WMlg0K5LyB5Lia5a6J5YWo5paH5YyW5bu66K6+55qE5Zub5Liq6Zi25q61
DQrkvIHkuJrlronlhajmlofljJbnmoTkuInkuKrlhbPplK7or43vvJrkuaDmg6/jgIHmsJvlm7Tj
gIHku7flgLzop4INCuWkluS8geecn+eahOS4jeWkhOe9muWRmOW3peWQl++8nw0K5aSE572a55qE
55uu55qE77ya5LuY5Ye65oS/5oSP5pS56L+b55qE5Luj5Lu3DQrlpoLkvZXmraPnoa7lpITnvZrl
kZjlt6UNCuWuieWFqOmihuWvvOWKm+W9ouaIkOeahOS4ieS4quaguOW/g+imgee0oO+8muekuuiM
g+OAgeWFs+azqOOAgeW8leWvvA0K5pyJ5oSf6aKG5a+86ICF5a+55ZGY5bel55qE5b2x5ZONDQrn
pLrojIPnmoTmhI/kuYkNCua4uOaIj++8muihjOS4uuWSjOivreiogOeahOS7luS6uuihjOS4uuea
hOW9seWTjQ0K56CU6K6o77ya5aaC5L2V6K6p5L2g55qE5a6J5YWo566h55CG5bmy6YOo5Y+R5oyl
5L2c55SoDQrkurLoh6rnu4Tnu4flronlhajln7norq3nmoTkuInkuKropoHntKANCuWuieWFqCBL
UEnkvZPns7vorr7orqHvvJrnoa7lrprnm67moIfvvIzlsZXnpLrnu6nmlYgNCuWuieWFqOebruag
h+eahOiuvuiuoe+8muWfuuS6juiBjOi0o++8jOe7k+aenOS4jui/h+eoi+S4pOS4que6rOW6pg0K
6K6p6YOo6Zeo5Yqo6LW35p2l77ya5YWF5YiG6L+Q55So5a6J5YWo55uu5qCH55qE5rKf6YCa5oqA
5benDQrmoYjkvovmvJTnu4PvvJrln7rkuo7pg6jpl6jogYzotKPnu5jliLbpg6jpl6jnu6nmlYjn
rqHliLblm74NCuS4u+mimOWFq++8muWuieWFqOeuoeeQhuS9k+ezu+W7uuiuvuWunuaImA0KRUhT
5L2T57O755qE5paH5Lu25p625p6EDQrlt6XljoLlronlhajnrqHnkIbnqIvluo/kuI7liLbluqbk
uIDop4gNCkVIU+S9k+ezu+S6jOe6p+aWh+S7tue8luWGmeeahOS6lOS4quWOn+WImQ0K56iL5bqP
5paH5Lu257yW5YaZ5LmL5rWB56iL5Zu+57uY5Yi25oqA5benDQrmvJTnu4PvvJrln7rkuo7ms5Xl
vovms5Xop4TnmoTnqIvluo/mlofku7bnvJbliLYNCueJueiJsu+8muWfuuS6juaWh+S7tui/kOih
jOiAjOWunuaWveeahOWuoeaguOaKgOW3pw0KaClXQlPku4vnu43vvIjkvZznlKjjgIHnpLrkvovv
vIkNCmkpV0JT5YiG6Kej55qE6KGh6YeP5qCH5YeGDQpqKVBCU+OAgVdCU+OAgU9CU+OAgVJCU+S5
i+mXtOeahOWvueW6lOWFs+ezuw0KaynkupTnp43luLjop4HnmoTkvLDorqHmlrnms5UNCmwp6KeE
5qih44CB5bel5L2c6YeP44CB5bel5pyf5Lyw6K6hDQptKVBFUlTlm77nmoTnu5jliLYNCm4p5aaC
5L2V5Yqg5b+r6aG555uu5byA5Y+R6L+b5bqmDQpvKeWFs+mUrui3r+W+hOazlQ0KcCnlv6vpgJ/o
t5/ouKrms5UNCnEp5ryU57uD5LiO6Zeu6aKY6K6o6K66DQozLuWunuS+i+iusuino++8muafkOah
iOS+i+WFrOWPuOmhueebruiuoeWIkueahFdCU+W6k+WSjOmhueebruiuoeWIkueahOaooeadvw0K
MHcxaXZicnM0dzB2YWV0M2NyeHh0ZXM1YXJscmh5
--=====003_Dragon247736036105_=====
Content-Type: text/html;
	charset="utf-8"
Content-Transfer-Encoding: base64

PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwv
L0VOIj4NCjxIVE1MIHhtbG5zOm8gPSAidXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6
b2ZmaWNlIj48SEVBRD4NCjxNRVRBIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIg
aHR0cC1lcXVpdj1Db250ZW50LVR5cGU+DQo8TUVUQSBuYW1lPUdFTkVSQVRPUiBjb250ZW50PSJN
U0hUTUwgOC4wMC43NjAxLjE4NzE1Ij48L0hFQUQ+DQo8Qk9EWT4NCjxQPm9wZW5kYXRha2l077ya
5oKo5aW977yBPC9QPg0KPFA+44CK5bel5Y6C5a6J5YWo546v5aKD566h55CG77yIRUhT77yJ5a6e
5oiY44CLPC9QPg0KPFA+PEJSPuOAkOWfueiureaXtumXtOOAkTIwMTXlubQxMeaciDIwLTIx5LiK
5rW3Jm5ic3A7IDEx5pyIMjgtMjnoi4/lt54gMTLmnIgxOS0yMOaXpSZuYnNwOyANCuiLj+W3njxC
Uj7jgJDln7norq3lr7nosaHjgJHkvIHkuJrotJ/otKPkurrjgIHlronlhajliIbnrqHpooblr7zj
gIHlronlhajnrqHnkIbpg6jpl6jotJ/otKPkurrjgIHpg6jpl6jnu4/nkIbjgIHkuLvnrqHnrYk8
QlI+44CQ5o6I6K++5pa55byP44CR5qGI5L6L5YiG5Lqr44CB5a6e5Yqh5YiG5p6Q44CB5LqS5Yqo
6K6o6K6644CB6aG555uu5qih5ouf44CB5Z+56K6t5ri45oiPPEJSPuOAkOWfueiurei0ueeUqOOA
kTM4MDDlhYMv5Lik5aSp77yI5ZCr5Lik5aSp5Lit6aSQ44CB5oyH5a6a5pWZ5p2Q44CB6Iy254K5
77yJPEJSPuOAkOWAvOePreaJi+acuuOAkTA1MTItNjg3MDA2NTMmbmJzcDsmbmJzcDsgDQrvvIgw
77yJMTgwMTU1OTYzMjc8QlI+Jm5ic3A7IOivvueoi+eugOS7iyANCiZndDs8QlI+44CQ6K++56iL
6IOM5pmv44CRPEJSPuWFiOi/m+eahOWuieWFqOeuoeeQhue7j+mqjOWRiuivieaIkeS7rO+8muWu
ieWFqOeuoeeQhuaYr+S4gOS4quW6nuWkp+eahOezu+e7n++8jOmcgOimgeS7jueJqeWSjOS6uuS4
pOS4que7tOW6puWHuuWPke+8jDxCUj7mnInlhrPnrZblsYLnmoTph43op4bjgIHnrqHnkIblsYLn
moTmiafooYzjgIHlhajlkZjlj4LkuI7vvIzlr7nlronlhajnlJ/kuqfov5vooYzlhajov4fnqIvn
rqHnkIbvvIzlubbmoJHnq4voh6rkuIrogIw8QlI+5LiL55qE5a6J5YWo5LyY5YWI55CG5b+177yM
5omN6IO955yf5q2j5a6e546w5LqL5pWF5o6n5Yi255qE55uu55qE44CCPC9QPg0KPFA+6L+Z5piv
5LiA5Liq6Z2e5bi457qv57K555qE6K++56iL77yM5bCG6YCa6L+H5aSn6YeP5qGI5L6L5ZGK6K+J
5L2g77yM5a6J5YWo566h55CG5L2T57O75LiN5LuF5LuF55So5LqO5a6h5qC477yM5pu05bqUPEJS
PuivpeiejeWFpeWFrOWPuOeahOato+W4uOi/kOiQpeS9k+ezu++8jOS4jeWGjeS4uuWRmOW3pemi
neWkluWinuWKoOi0n+aLhe+8jOi9u+advueahOaehOaetuS7peS6i+aVheaOp+WItuS4uuebruea
hOeahDxCUj7ns7vnu5/lronlhajnrqHnkIbkvZPns7vjgII8L1A+DQo8UD7jgJDln7norq3nm67n
moTjgJE8QlI+5LqG6Kej5LqL5pWF5b2i5oiQ55qE6L+H56iL5LiO5o6n5Yi25Y6f55CGPEJSPuae
hOW7uuaIkOeGn+OAgeWunuaViOeahOWuieWFqOeuoeeQhuS9k+ezuzxCUj7mjozmj6Hln7rkuo7k
uovmlYXpooTpmLLnmoTlronlhajnrqHnkIblt6Xlhbc8L1A+DQo8UD7jgJDpgILlkIjmraTor77n
qIvnmoTkvIHkuJrjgJE8QlI+5bCa5pyq5bu656uL5pyJ5pWI5a6J5YWo566h55CG5L2T57O755qE
5LyB5LiaPEJSPuS9nOS4mumjjumZqei+g+mrmOaIluWuieWFqOS6i+aVheWkmuWPkeeahOS8geS4
mjxCUj7lronlhajpmpDmgqPmgLvmmK/kuI3og73moLnmsrvnmoTkvIHkuJo8QlI+5oiQ5aWX5Yi2
5bqm5LiA5omn6KGM5bCx5Y+Y5qC377yM5pyq6IO95pyJ5pWI5o6n5Yi25LqL5pWF55qE5LyB5Lia
PEJSPuWuieWFqOeuoeeQhuW3peS9nOaXoOazlea3seWFpeWIsOWQhOS4qumDqOmXqOOAgeePree7
hOOAgeWRmOW3peS4reeahOS8geS4mjwvUD4NCjxQPiZuYnNwOzwvUD4NCjxQPjxCUj7or77nqIvl
pKfnurI8QlI+5Li76aKY5LiA77ya5qKz55CG5q2j56Gu55qE5a6J5YWo5oSP6K+G5LiO5a6J5YWo
566h55CGPEJSPuWuieWFqOeUn+S6p+WPkeWxleeKtuWGteS4juS4reWbveWuieWFqOeUn+S6p+eO
sOeKtjxCUj7moYjkvovvvJrlronlhajkuovmlYXlr7nkvIHkuJrnmoTlvbHlk408QlI+5Zu95YaF
5LyB5LiaRUhT566h55CG55qE5LqU5aSn57y66Zm3PEJSPuaXtuS7o+WRvOWUpOS4k+S4muWuieWF
qOeuoeeQhuS6uuWRmDxCUj7lronlhajnrqHnkIbkurrlkZjkuI7pg6jpl6jnrqHnkIbogIXnmoTo
gYzotKPliIbphY08QlI+5qGI5L6L56CU6K6o77ya5Lit6I2j54iG54K45qGI44CB5a6d5rqQ5Liw
56a95Lia54Gr54G+5LqL5pWF5Y+R5bGV5qih5Z6L5LiO5LqL5pWF6aKE6Ziy5Y6f55CGPEJSPuS4
u+mimOS6jO+8muW3peWOguWuieWFqOazleW+i+azleinhOeuoeeQhu+8jOinhOmBv+i/neazlemj
jumZqTxCUj7igJzplb/niZnigJ3nmoTlronlhajnlJ/kuqfms5XvvIzkvaDkuobop6PlpJrlsJE8
QlI+5rOV5b6L5rOV6KeE5Zyo5a6J5YWo5L2T57O75Lit55qE5LiJ5aSn5L2c55SoPEJSPuWuieWF
qOeUn+S6p+azleW+i+azleinhOWfuuacrOaetuaehDxCUj7lronlhajms5Xlvovms5Xop4TlnKjm
l6XluLjnrqHnkIbkuK3nmoTlhbjlnovpl67popjkuI7lupTlr7k8QlI+5rOV5b6L5rOV6KeE566h
55CG5Z+65pys5rWB56iLPEJSPueJueiJsu+8mumAgueUqOazleW+i+azleinhOivhOS7t+S4juWF
rOWPuOWQiOinhOaAp+WuoeaguDxCUj7kuLvpopjkuInvvJrkvZzkuJrpo47pmannmoTns7vnu5/m
jqfliLbmioDmnK88QlI+5Y2x6Zmp5rqQ6L6o6K+G5LiO566h55CG55qE5oSP5LmJPEJSPuS9nOS4
muatpemqpOWIkuWIhuaKgOW3p+S4juS4ieenjeaWueazlTxCUj7ljbHpmanmupDovqjor4bnmoTk
uKTnp43lrp7miJjmlrnms5U8QlI+54m56Imy77ya6YeN5aSn5Y2x6Zmp5rqQ5rK755CG5Y6f5YiZ
PEJSPuWNsemZqea6kOayu+eQhuaKgOacr+WFs+mUruivjTxCUj7mnKzotKjlronlhajjgIHlt6Xn
qIvmioDmnK/ljp/liJnlnKjlronlhajnrqHnkIbkuK3nmoTov5DnlKg8QlI+54m56Imy77ya4oCc
5LqU6Zeu5rOV4oCd5Zyo5Y2x6Zmp5rqQ5bel5L2c5Lit55qE6L+Q55SoPEJSPuWNsemZqea6kOay
u+eQhuWvueetlueahOS6lOmhueWfuuacrOimgeaxgjxCUj7nibnoibLvvJrljbHpmanmupDovqjo
r4bkuI7ns7vnu5/mjqfliLbmqKHlnovlm748QlI+5bi46KeB55qE44CB5LiN5o6o6I2Q55qE5bKX
5L2N5L2c5Lia5oyH5a+85LmmPEJSPuWuieWFqOS9nOS4muaMh+WvvOS5pue8luWItuaWueazlTxC
Uj7nm67op4bljJbnmoTkvZzkuJrvvJrlrp7njrDigJznnIvlvpfop4HnmoTnrqHnkIbigJ08QlI+
5ryU57uD77ya55uu6KeG5YyW5Zyo5a6J5YWo566h55CG5Lit55qE6L+Q55So5oqA5benPEJSPuS4
gOeCueWfuuWHhuS4juS4gOeCueaVmeiCsu+8iE9QTO+8ieeahOWunuaWveimgemihjxCUj7mvJTn
u4PvvJrkuIDngrnln7rlh4bnmoTnvJbliLY8QlI+5Li76aKY5Zub77ya5a6J5YWo5LqL5pWF55qE
5YmN5YWG566h55CGPEJSPua1t+WboOmHjOW4jOazleWImeS4juS6i+aVhemihOmYsuWOn+eQhjxC
Uj7lpKfkuovmlYXnmoTkuInlpKfliY3lhYY8QlI+5Y+R5o6Y6ZqQ5oKj55qE5Lik5aSn6YCU5b6E
PEJSPuW8gOWxleWRmOW3peWPguS4jueahOS6i+aVheWJjeWFhuWPkeaOmOa0u+WKqDxCUj7lronl
hajmo4Dmn6XnmoTkuKTnp43mlrnms5U8QlI+54m56Imy77yaT0lDQVPlv6vpgJ/pmpDmgqPmo4Dm
n6Xms5U8QlI+5ryU57uD77ya6ZqQ5oKj5o+P6L+w55qE5pa55byP77yI5Zug5Li64oCm5omA5Lul
4oCm6YCg5oiQ4oCm77yJPEJSPuayu+eQhumakOaCo+WJjeeahOWfuuacrOayn+mAmueahOmHjeim
geaApzxCUj7nibnoibLvvJrpmpDmgqPmsrvnkIbkuI7lho3lj5HpmLLmraLnmoTkuInkuKrlr7nn
rZY8QlI+6ZKI5a+5566h55CG5Lq65ZGY55qE5qCH5YeG5qOA5p+l6KGo57yW5Yi255qE5Lik5Liq
5L6d5o2u44CB5LiJ6aG55YaF5a65PEJSPuWuieWFqOajgOafpeS4juWPjemmiOi3n+i4quaWueaz
lTxCUj7nibnoibLvvJrooYzkuLrkuaDmg6/ljJbkuI7kuaDmg6/mgKfov53nq6A8QlI+6L+d56ug
5ZGY5bel55qE6KGM5Li657qg5q2j5pa55rOVPEJSPueJueiJsu+8muS5oOaDr+WIsOawm+WbtO+8
jOW3peWOguWuieWFqOaWh+WMlueahOWbm+S4quatpemqpDxCUj7kuLvpopjkupTvvJrkuovmlYXl
upTmgKXnrqHnkIbkuI7osIPmn6Xlr7nnrZbvvIgwLjVo77yJPEJSPuS4reWbveS8geS4mueahOW6
lOaApeS9k+ezu+eOsOeKtuS4juWFuOWei+mXrumimDxCUj7lupTmgKXpooTmoYjnmoTmpoLlv7Xk
uI7moLjlv4PopoHntKA8QlI+5bel5Y6C5bqU5oCl5LqL5oCB5YiG5p6Q5LiO6aKE5qGI57yW5Yi2
5pa55rOVPEJSPuW6lOaApemihOahiOS9k+ezu+eahOS4ieWkp+e7hOaIkOmDqOWIhjxCUj7nibno
ibLvvJrlupTmgKXmlZHmj7TpooTmoYjnvJbliLblha3mraXpqqQ8QlI+6aKE5qGI5ryU5Lmg5YeG
5aSH5LiO5a6e5pa95oqA5benPEJSPuahiOS+i++8mueOsOWcuuWkhOe9rumihOahiOe8luWItjxC
Uj7op4bpopHmoYjkvovvvJrkuIDpopfonrrkuJ3pkonkuI7kuovmlYXmiJDlm6A8QlI+5LqL5pWF
5aSa5Zug57Sg55CG6K665LiO6L2o6L+55Lqk5Y+J55CG6K66PEJSPjV3aHnms5XlnKjkuovmlYXi
gJzmupDigJ3lm6DliIbmnpDkuK3nmoTov5DnlKg8QlI+5Li76aKY5YWt77ya5bel5Y6C5a6J5YWo
5Z+56K6t55qE5a6e5pa95oqA5benPEJSPuWyl+S9jeWuieWFqOWfueiureeahOWunuaWveWbm+at
peazlTxCUj7moYjkvovvvJrlpKflt7Tovablj7jmnLrnmoTlspfkvY3lronlhajln7norq08QlI+
5a6J5YWo5Z+56K6t5a+56LGh5Y+K5YW25Z+56K6t562W55WlPEJSPuWuieWFqOWfueiureaVmead
kOW8gOWPkeeahOS6lOS4quatpemqpDxCUj7lronlhajln7norq3or77nqIvnrZbliJLkuI7ntKDm
nZDmlbTnkIbmioDlt6c8QlI+5ben55So5qGI5L6L5byA5bGV5Z+56K6tPEJSPuW3p+eUqOe7j+WF
uOWPpeW8gOWxleWfueiurTxCUj7njrDlnLrlrp7mlr3lronlhajln7norq3mnIDmnInmlYg8QlI+
6KeG6aKR5pWZ5p2Q5Zyo5Z+56K6t5Lit55qE5a6e6ZmF6L+Q55SoPEJSPuS4u+mimOS4g++8muW3
peWOguWuieWFqOaWh+WMluW7uuiuvuS4juWuieWFqOmihuWvvOWKm+aPkOWNhzxCUj7lhazlj7jl
ronlhajnrqHnkIbnmoTnu4jmnoHnm67moIfvvJrkvIHkuJrmlofljJY8QlI+5LyB5Lia5a6J5YWo
5paH5YyW5bu66K6+55qE5Zub5Liq6Zi25q61PEJSPuS8geS4muWuieWFqOaWh+WMlueahOS4ieS4
quWFs+mUruivje+8muS5oOaDr+OAgeawm+WbtOOAgeS7t+WAvOingjxCUj7lpJbkvIHnnJ/nmoTk
uI3lpITnvZrlkZjlt6XlkJfvvJ88QlI+5aSE572a55qE55uu55qE77ya5LuY5Ye65oS/5oSP5pS5
6L+b55qE5Luj5Lu3PEJSPuWmguS9leato+ehruWkhOe9muWRmOW3pTxCUj7lronlhajpooblr7zl
ipvlvaLmiJDnmoTkuInkuKrmoLjlv4PopoHntKDvvJrnpLrojIPjgIHlhbPms6jjgIHlvJXlr7w8
QlI+5pyJ5oSf6aKG5a+86ICF5a+55ZGY5bel55qE5b2x5ZONPEJSPuekuuiMg+eahOaEj+S5iTxC
Uj7muLjmiI/vvJrooYzkuLrlkozor63oqIDnmoTku5bkurrooYzkuLrnmoTlvbHlk408QlI+56CU
6K6o77ya5aaC5L2V6K6p5L2g55qE5a6J5YWo566h55CG5bmy6YOo5Y+R5oyl5L2c55SoPEJSPuS6
suiHque7hOe7h+WuieWFqOWfueiureeahOS4ieS4quimgee0oDxCUj7lronlhaggDQpLUEnkvZPn
s7vorr7orqHvvJrnoa7lrprnm67moIfvvIzlsZXnpLrnu6nmlYg8QlI+5a6J5YWo55uu5qCH55qE
6K6+6K6h77ya5Z+65LqO6IGM6LSj77yM57uT5p6c5LiO6L+H56iL5Lik5Liq57qs5bqmPEJSPuiu
qemDqOmXqOWKqOi1t+adpe+8muWFheWIhui/kOeUqOWuieWFqOebruagh+eahOayn+mAmuaKgOW3
pzxCUj7moYjkvovmvJTnu4PvvJrln7rkuo7pg6jpl6jogYzotKPnu5jliLbpg6jpl6jnu6nmlYjn
rqHliLblm748QlI+5Li76aKY5YWr77ya5a6J5YWo566h55CG5L2T57O75bu66K6+5a6e5oiYPEJS
PkVIU+S9k+ezu+eahOaWh+S7tuaetuaehDxCUj7lt6XljoLlronlhajnrqHnkIbnqIvluo/kuI7l
iLbluqbkuIDop4g8QlI+RUhT5L2T57O75LqM57qn5paH5Lu257yW5YaZ55qE5LqU5Liq5Y6f5YiZ
PEJSPueoi+W6j+aWh+S7tue8luWGmeS5i+a1geeoi+Wbvue7mOWItuaKgOW3pzxCUj7mvJTnu4Pv
vJrln7rkuo7ms5Xlvovms5Xop4TnmoTnqIvluo/mlofku7bnvJbliLY8QlI+54m56Imy77ya5Z+6
5LqO5paH5Lu26L+Q6KGM6ICM5a6e5pa955qE5a6h5qC45oqA5benPEJSPmgpV0JT5LuL57uN77yI
5L2c55So44CB56S65L6L77yJPEJSPmkpV0JT5YiG6Kej55qE6KGh6YeP5qCH5YeGPEJSPmopUEJT
44CBV0JT44CBT0JT44CBUkJT5LmL6Ze055qE5a+55bqU5YWz57O7PEJSPmsp5LqU56eN5bi46KeB
55qE5Lyw6K6h5pa55rOVPEJSPmwp6KeE5qih44CB5bel5L2c6YeP44CB5bel5pyf5Lyw6K6hPEJS
Pm0pUEVSVOWbvueahOe7mOWItjxCUj5uKeWmguS9leWKoOW/q+mhueebruW8gOWPkei/m+W6pjxC
Uj5vKeWFs+mUrui3r+W+hOazlTxCUj5wKeW/q+mAn+i3n+i4quazlTxCUj5xKea8lOe7g+S4jumX
rumimOiuqOiuujxCUj4zLuWunuS+i+iusuino++8muafkOahiOS+i+WFrOWPuOmhueebruiuoeWI
kueahFdCU+W6k+WSjOmhueebruiuoeWIkueahOaooeadvzwvUD4NCjxQPjxGT05UIGNvbG9yPXdo
aXRlPmJ2dmw0NGppYzdtOXhwb3g5bDlseGFldXlwYXh1aTwvRk9OVD48L1A+PC9CT0RZPjwvSFRN
TD4NCg==
--=====003_Dragon247736036105_=====--


(Eli the Bearded) #7

The example message you provided is not in UTF-8, hence the error seen. (UTF-8 has certain constraints that allow programs to do limited checks for conformance, “valid byte sequences”.)

The message has a content-type header, but it does not specify charset on that header, that normally would make figuring out the character encoding difficult, but there’s a strong hint in the subject. Following old conventions, the headers are 7-bit safe here, and the GB2312 tells us the charset, and the following B tells us the transfer encoding. (The format is MIME encoded word.)

$ echo sKLA77DNsM274dSx0MXPorLJvK/I7bz+ | mmencode -u | iconv -f GB2312 -t utf-8
阿里巴巴会员信息采集软件

With charset hint, I can see the first line of the message goes something like this:

一锟斤拷锟斤拷锟斤拷锟斤拷桶突锟皆憋拷