Improved unit tests.

This commit is contained in:
Martin Edenhofer 2013-10-31 23:56:08 +01:00
parent cd119e4fae
commit 565d99f5e9
3 changed files with 175 additions and 5 deletions

View file

@ -69,12 +69,22 @@ class Channel::EmailParser
data[field.name.to_s.downcase.to_sym] = Encode.conv( 'utf8', field.to_s )
}
# get sender
from = nil
['from', 'reply-to', 'return-path'].each { |item|
if !from
if mail[ item.to_sym ]
from = mail[ item.to_sym ].value
end
end
}
# set extra headers
data[:from_email] = Mail::Address.new( mail[:from].value ).address
data[:from_local] = Mail::Address.new( mail[:from].value ).local
data[:from_domain] = Mail::Address.new( mail[:from].value ).domain
data[:from_display_name] = Mail::Address.new( mail[:from].value ).display_name ||
( Mail::Address.new( mail[:from].value ).comments && Mail::Address.new( mail[:from].value ).comments[0] )
data[:from_email] = Mail::Address.new( from ).address
data[:from_local] = Mail::Address.new( from ).local
data[:from_domain] = Mail::Address.new( from ).domain
data[:from_display_name] = Mail::Address.new( from ).display_name ||
( Mail::Address.new( from ).comments && Mail::Address.new( from ).comments[0] )
# do extra decoding because we needed to use field.value
data[:from_display_name] = Mail::Field.new( 'X-From', data[:from_display_name] ).to_s

148
test/fixtures/mail16.box vendored Normal file
View file

@ -0,0 +1,148 @@
From w2sjy@ns2.actionserv.com Tue Oct 29 03:52:03 2013
Return-Path: <w2sjy@ns2.actionserv.com>
X-Original-To: info@znuny.com
Delivered-To: znuny-sales@arber.znuny.com
Received: from mail.sasscoyc.com (unknown [184.22.37.11])
by arber.znuny.com (Postfix) with ESMTP id EB79D60039
for <info@znuny.com>; Tue, 29 Oct 2013 03:52:02 +0100 (CET)
Date: Sun, 8 Dec 2013 08:40:11 +0800
To: "enterprisemobility.apacservice" <enterprisemobility.apacservice@motorola.com>
Reply-To: <vipyimin@126.com>
Subject: =?GB2312?B?ob4g1rHNqMPAufrFxcP7tdo0ObTz0acgs8m5prrzuLa30SChvw==?=
MIME-Version: 1.0
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.2800.1158
Content-Type: text/html;
charset="GB2312"
Content-Transfer-Encoding: base64
Content-Disposition: inline
X-UID: 230
Status: RO
Content-Length: 9411
Lines: 123
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwv
L0VOIj4NCjxIVE1MPjxIRUFEPjxUSVRMRT7Qwr2ozfjSsyAzPC9USVRMRT4NCjxNRVRBIGh0dHAt
ZXF1aXY9Q29udGVudC1MYW5ndWFnZSBjb250ZW50PXpoLWNuPg0KPE1FVEEgaHR0cC1lcXVpdj1D
b250ZW50LVR5cGUgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWdiayI+DQo8TUVUQSBjb250
ZW50PSJNU0hUTUwgNi4wMC4yODAwLjExMDYiIG5hbWU9R0VORVJBVE9SPjwvSEVBRD4NCjxCT0RZ
PjxTUEFOIHN0eWxlPSJGT05ULVNJWkU6IDE1cHQ7IENPTE9SOiBibHVlOyBGT05ULUZBTUlMWTog
y87M5SI+DQo8RElWPjxGT05UIGNvbG9yPWJsYWNrIHNpemU9Mj7E+rrDo6zV4rfi0MXI57n707DP
7LW9xPq1xMn6u+66zbmk1/ejrM7Sw8fP8sT6s8+/0rXEtcDHuKGjPC9GT05UPjwvRElWPg0KPERJ
Vj48Rk9OVCBjb2xvcj1ibGFjayBzaXplPTI+xPq72Li0tMvTys/kvLS/yc3LtqmjrNLUuvO++LbU
sru74dTZtM7K1bW9o6w8L0ZPTlQ+PC9ESVY+DQo8RElWPjxGT05UIGNvbG9yPWJsYWNrPjxGT05U
IGZhY2U9utrM5SANCnNpemU9Mz48U1RST05HPtTZtM7Xo7ijxPq5pNf3y7PA+6Osu+nS9sPAwvqj
rLzSzaXQ0rijo6zJ+tLi0MvCoaGjPC9TVFJPTkc+PC9GT05UPiA8L0ZPTlQ+PC9ESVY+DQo8RElW
PiZuYnNwOzwvRElWPjwvU1BBTj4NCjxQIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0iTUFSR0lOOiAw
Y20gMGNtIDBwdDsgTElORS1IRUlHSFQ6IDE3LjI1cHQiPjxTUEFOIA0Kc3R5bGU9IkZPTlQtU0la
RTogMTVwdDsgQ09MT1I6IGJsdWU7IEZPTlQtRkFNSUxZOiDLzszlIj48Qj7Wsc2ow8C5+sXFw/u1
2jQ5tPPRpyANCrPJuaa687i2t9E8QlI+PC9CPjxCUj48L1NQQU4+PFNQQU4gDQpzdHlsZT0iRk9O
VC1TSVpFOiAxNXB0OyBGT05ULUZBTUlMWTogy87M5SI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7
Jm5ic3A7IA0KPEI+Jm5ic3A7ILarsbG089GnPC9CPjxCUj4mbmJzcDsmbmJzcDsmbmJzcDsgPEEg
DQpocmVmPSJodHRwOi8vd3d3Lm5vcnRoZWFzdGVybi5lZHUiPnd3dy5ub3J0aGVhc3Rlcm4uZWR1
PC9BPjxCUj6hoTwvU1BBTj48L1A+DQo8UCBjbGFzcz1Nc29Ob3JtYWwgDQpzdHlsZT0iTUFSR0lO
OiAwY20gMGNtIDBwdDsgTElORS1IRUlHSFQ6IDE3LjI1cHQiPjGhosfFwbq/zrPMo7rN6rPJuvO0
77W9sc/StbHq17yjrLy0v8nJ6sfrtquxsbTz0ae1xNGnyr/Rp867L8u2yr/Rp867oaM8QlI+PFNQ
QU4gDQpsYW5nPUVOLVVTIA0Kc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBDT0xPUjogYmxhY2s7
IEZPTlQtRkFNSUxZOiBXaW5nZGluZ3MiPmw8U1BBTiANCnN0eWxlPSJGT05UOiA3cHQgJ1RpbWVz
IE5ldyBSb21hbiciPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyANCjwvU1BBTj48L1NQQU4+VE9F
Rkw6NjFJYnQotaXP7rK7tc3T2jEzt9ajrMbk1tC/2tPvMTa31ryw0LTX9zE0t9bS1MnPKUlFTFRT
OjYuMCAotaXP7rK7tc3T2jUuNSk8QlI+PFNQQU4gDQpsYW5nPUVOLVVTIA0Kc3R5bGU9IkZPTlQt
U0laRTogMTAuNXB0OyBDT0xPUjogYmxhY2s7IEZPTlQtRkFNSUxZOiBXaW5nZGluZ3MiPmw8U1BB
TiANCnN0eWxlPSJGT05UOiA3cHQgJ1RpbWVzIE5ldyBSb21hbiciPiZuYnNwOyZuYnNwOyZuYnNw
OyZuYnNwOyANCjwvU1BBTj48L1NQQU4+1NrQo7PJvKjGvb75ODC31tLUyc+jrMbk1tDJz8nM0afU
usv509DXqNK1o6y+rbzD0ae6zb2o1v7Rp9Kqx/PGvb75ODS31tLUyc88QlI+PEJSPjKhotaxvdPJ
6sfrsb6/xqO60OjSqrjf1tCxz9K1u/K438j91Nq2wTsgDQpUT0VGTGlidDkyo6hyZWFkaW5nMjKj
rGxpc3RlbmluZzIyo6xzcGVha2luZzI0o6w8QlI+d3JpdGluZzIyo6ksIA0KSUVMVFM2LjWju7bU
ufq8ytGnyfq2+NHUo6xTQVS78kFDVLfHsdjQ68zhuamho0dQQTMuMNLUyc88QlI+PEJSPjOhotax
vdPJ6sfry7bKv6O60Oixvr/Gsc/StdPQ0afOu7vytPPLxNTatsHRp8n6oaPLtsq/0qrH89Pv0dSz
ybyoMTAwt9bS1MnPoaM8QlI+R1BBMy4w0tTJz6Ossr+31teo0rXSqsfzMy4zM9LUyc+hozxCUj48
QlI+08XKxteo0rWjujxCUj48QlI+yczStbywyee74b/G0aejrLmks8zRp6Osyv3Rp7ywvMbL47v6
0aejrM7vwO28sMn6w/y/xtGno6zJzNK10NDV/rncwO2jrLzGy+O7+tGno6w8QlI+0NDOqsnxvq2/
xtGno6y+rbzD0aejrLuv0aejrMn6zu+jrL3wyNq8sLvhvMajrLmks8zRpy3NwcS+vLC7t7Gjo6zJ
+s7vvLzK9aOsufq8yjxCUj7Kws7xo6y5pLPM0actvMbL47v6z7XNs6Os0MLOxdGno6y5pLPM0act
tee7+qOsvaG/tb/G0aejrMr90aejrM7vwO21yKGjPC9QPg0KPFAgY2xhc3M9TXNvTm9ybWFsIA0K
c3R5bGU9Ik1BUkdJTjogMGNtIDBjbSAwcHQ7IExJTkUtSEVJR0hUOiAxNy4yNXB0Ij48QlI+PEI+
PEZPTlQgY29sb3I9IzAwMDBmZiANCnNpemU9ND7B9NGn18nRr6O6PC9GT05UPjwvQj48L1A+DQo8
UCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9Ik1BUkdJTjogMGNtIDBjbSAwcHQ7IExJTkUtSEVJR0hU
OiAxNy4yNXB0Ij6hoTwvUD4NCjxQIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0iTUFSR0lOOiAwY20g
MGNtIDBwdDsgTElORS1IRUlHSFQ6IDE3LjI1cHQiPjxCPjxGT05UIA0KY29sb3I9IzAwMDBmZiBz
aXplPTQ+s8LAz8qmo7pxcTo0Nzc5NDE5MTImbmJzcDsgtee7sKO6MTM1MjE0ODE2NDQ8QlI+zfXA
z8qmo7pxcToxNzU2NzAzMTE0IA0Ktee7sDogMTM2NzExNzcwODk8L0ZPTlQ+PC9CPjxCUj6hoTwv
UD4NCjxQIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0iTUFSR0lOOiAwY20gMGNtIDBwdDsgTElORS1I
RUlHSFQ6IDE3LjI1cHQiPjxCPjxGT05UIA0Kc2l6ZT01PqG+18nRr7vYuLTTys/kvLS/yaG/PC9G
T05UPjwvQj48L1A+DQo8UCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9Ik1BUkdJTjogMGNtIDBjbSAw
cHQ7IExJTkUtSEVJR0hUOiAxNy4yNXB0Ij6hoTwvUD4NCjxQIGNsYXNzPU1zb05vcm1hbCBzdHls
ZT0iTUFSR0lOOiAwY20gMGNtIDBwdDsgTElORS1IRUlHSFQ6IDE3LjI1cHQiPjxCPjxTUEFOIA0K
c3R5bGU9IkZPTlQtU0laRTogMTZwdDsgQkFDS0dST1VORDogYXF1YTsgQ09MT1I6IGJsYWNrOyBG
T05ULUZBTUlMWTogy87M5SI+w8C5+s2218rSxsPxoaqhqjwvU1BBTj48U1BBTiANCmxhbmc9RU4t
VVMgDQpzdHlsZT0iRk9OVC1TSVpFOiAxNnB0OyBCQUNLR1JPVU5EOiBhcXVhOyBDT0xPUjogYmxh
Y2s7IEZPTlQtRkFNSUxZOiBBcmlhbCI+NTA8L1NQQU4+PFNQQU4gDQpzdHlsZT0iRk9OVC1TSVpF
OiAxNnB0OyBCQUNLR1JPVU5EOiBhcXVhOyBDT0xPUjogYmxhY2s7IEZPTlQtRkFNSUxZOiDLzszl
Ij7N8sPA1KrWsc22z+7EvzwvU1BBTj48L0I+PC9QPg0KPFAgY2xhc3M9TXNvTm9ybWFsIHN0eWxl
PSJNQVJHSU46IDBjbSAwY20gMHB0OyBMSU5FLUhFSUdIVDogMTcuMjVwdCI+oaE8L1A+DQo8UCBj
bGFzcz1Nc29Ob3JtYWwgDQpzdHlsZT0iTUFSR0lOOiAwY20gMGNtIDBwdDsgTElORS1IRUlHSFQ6
IDE3LjI1cHQiPtK7oaLP7sS/vPK96aO6PEJSPjxCUj41MM3yw8DUqiANCrzTw8vDwLn61qrD+8PA
t6LGt8XGIKOsv6rX1Ly6tcQzvNLDwLeizPyjrCC/ydLUzOG5qTEyLTE1uPbIq9awuaTX97v6PEJS
Prvho6zN6sirwvrX482218rSxsPxtcTTw7mk0OjH86O719S8utO109DI/bzSterD5rXEMTAwJSC5
ycioo6wgDQrGt8XGyczNxrz2vq25/TxCUj7G89K10c+48b+8usu1xLjfvLbWsNK1vq3A7db3wO2j
rLLGzvExMDAlzbjD96OsILGjtdfE6rvYsajCyjElo6wgNcTquvO72Lm6oaM8QlI+PEJSPrb+oaLP
7sS/zNi146O6PC9QPg0KPFAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSJNQVJHSU46IDBjbSAwY20g
MHB0OyBMSU5FLUhFSUdIVDogMTcuMjVwdCI+PEJSPjxTUEFOIA0KbGFuZz1FTi1VUyANCnN0eWxl
PSJGT05ULVNJWkU6IDEwLjVwdDsgQ09MT1I6IGJsYWNrOyBGT05ULUZBTUlMWTogV2luZ2Rpbmdz
Ij5sPFNQQU4gDQpzdHlsZT0iRk9OVDogN3B0ICdUaW1lcyBOZXcgUm9tYW4nIj4mbmJzcDsmbmJz
cDsmbmJzcDsgDQo8L1NQQU4+PC9TUEFOPjEwMCXWsb3TzbbXyqGi1rG9077N0rWhosnzxfrKsbzk
tsyjuzxCUj48U1BBTiBsYW5nPUVOLVVTIA0Kc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBDT0xP
UjogYmxhY2s7IEZPTlQtRkFNSUxZOiBXaW5nZGluZ3MiPmw8U1BBTiANCnN0eWxlPSJGT05UOiA3
cHQgJ1RpbWVzIE5ldyBSb21hbiciPiZuYnNwOyZuYnNwOyZuYnNwOyA8L1NQQU4+PC9TUEFOPtfU
09AxMDAltcSy+sioo6wgDQqyxs7xzerIq824w/ejuzxCUj48U1BBTiBsYW5nPUVOLVVTIA0Kc3R5
bGU9IkZPTlQtU0laRTogMTAuNXB0OyBDT0xPUjogYmxhY2s7IEZPTlQtRkFNSUxZOiBXaW5nZGlu
Z3MiPmw8U1BBTiANCnN0eWxlPSJGT05UOiA3cHQgJ1RpbWVzIE5ldyBSb21hbiciPiZuYnNwOyZu
YnNwOyZuYnNwOyANCjwvU1BBTj48L1NQQU4+1qrD+8a3xca1xLPJyuzJzNK1xKPKvaOs0c+48b+8
usu1xNaw0rW+rcDtyMvW98Dto7s8QlI+PFNQQU4gbGFuZz1FTi1VUyANCnN0eWxlPSJGT05ULVNJ
WkU6IDEwLjVwdDsgQ09MT1I6IGJsYWNrOyBGT05ULUZBTUlMWTogV2luZ2RpbmdzIj5sPFNQQU4g
DQpzdHlsZT0iRk9OVDogN3B0ICdUaW1lcyBOZXcgUm9tYW4nIj4mbmJzcDsmbmJzcDsmbmJzcDsg
DQo8L1NQQU4+PC9TUEFOPs7lxOq687CyyKu1xMrVubq068qpoaM8QlI+oaE8L1A+DQo8UCBjbGFz
cz1Nc29Ob3JtYWwgc3R5bGU9Ik1BUkdJTjogMGNtIDBjbSAwcHQ7IExJTkUtSEVJR0hUOiAxNy4y
NXB0Ij7I/aGi1MvTqsSjyr2jujwvUD4NCjxQIGNsYXNzPU1zb05vcm1hbCANCnN0eWxlPSJNQVJH
SU46IDBjbSAwY20gMHB0OyBMSU5FLUhFSUdIVDogMTcuMjVwdCI+PEJSPsa3xca+rcDto6jP4LWx
09rP7sS/vq3A7aOp0tG+rdPQ19S8usj9vNLTr8D7tcS16qOszbbXysjL19S8utKyv6rI/bzSteqj
rCANCs6vzdDGt8XGPEJSPr6twO3AtLncwO2jrCDI57n706/A+8v7xMMxLzTA+8jzo6zI57n7v/fL
8Mv70rLSqsXiMS80LiDE+r71tcPV4tH5us/A7cLwo78gDQo8QlI+PEJSPrbU09q53MDtuavLvqOo
z+7Ev9fcs9Cw/KOpwLS9sqOsyOe5+82syrG53MDt18UyMDC80sPFteq1xMa3xca+rcDto6jP7sS/
vq3A7aOpo6wgDQo8QlI+1eLR+bXE1MvTqrvhxeLHrsLwo7/I57n7y+PX3NXLsrvF4seuo6zL+8PH
vs2/ydLUsLTV1dStvNvK1bm6w7+49s2218rIy7XEterD5qOsIDxCUj7Iu7rz1NmwtNXVytCzobzb
wvS4+LzTw8u16rXEvq3A7S4gDQrL+dLUudzA7bmry77U2s/tytzNttfKxtq85DMvNLXEwPvS5rXE
zazKsaOsPEJSPru5u+HP7crczbbXyrO3s/a687Xqw+bU9ta1tcTK1dLmoaMgPC9QPg0KPFAgY2xh
c3M9TXNvTm9ybWFsIHN0eWxlPSJNQVJHSU46IDBjbSAwY20gMHB0OyBMSU5FLUhFSUdIVDogMTcu
MjVwdCI+oaE8L1A+DQo8UCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9Ik1BUkdJTjogMGNtIDBjbSAw
cHQ7IExJTkUtSEVJR0hUOiAxNy4yNXB0Ij48Qj48U1BBTiANCnN0eWxlPSJCQUNLR1JPVU5EOiBh
cXVhOyBDT0xPUjogYmxhY2s7IEZPTlQtRkFNSUxZOiDLzszlIj48Rk9OVCANCnNpemU9NT7SxsPx
18nRr6O6PC9GT05UPjwvU1BBTj48L0I+PC9QPg0KPFAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSJN
QVJHSU46IDBjbSAwY20gMHB0OyBMSU5FLUhFSUdIVDogMTcuMjVwdCI+oaE8L1A+DQo8UCBjbGFz
cz1Nc29Ob3JtYWwgc3R5bGU9Ik1BUkdJTjogMGNtIDBjbSAwcHQ7IExJTkUtSEVJR0hUOiAxNy4y
NXB0Ij48Qj48U1BBTiANCnN0eWxlPSJCQUNLR1JPVU5EOiBhcXVhOyBDT0xPUjogYmxhY2s7IEZP
TlQtRkFNSUxZOiDLzszlIj48Rk9OVCANCnNpemU9NT7A7s/IyfqjujwvRk9OVD48L1NQQU4+PEZP
TlQgc2l6ZT01PjxTUEFOIGxhbmc9RU4tVVMgDQpzdHlsZT0iQkFDS0dST1VORDogYXF1YTsgQ09M
T1I6IGJsYWNrOyBGT05ULUZBTUlMWTogQXJpYWwiPnFxOiAyNjU0MDM1OTk5Jm5ic3A7IA0KPC9T
UEFOPjwvRk9OVD48L0I+PEI+PEZPTlQgc2l6ZT01PjxTUEFOIA0Kc3R5bGU9IkJBQ0tHUk9VTkQ6
IGFxdWE7IENPTE9SOiBibGFjazsgRk9OVC1GQU1JTFk6IMvOzOUiPrXnu7CjujwvU1BBTj48L0ZP
TlQ+PFNQQU4gDQpsYW5nPUVOLVVTIHN0eWxlPSJCQUNLR1JPVU5EOiBhcXVhOyBDT0xPUjogYmxh
Y2s7IEZPTlQtRkFNSUxZOiBBcmlhbCI+PEZPTlQgDQpzaXplPTU+MTMzOTE1Mzk5ODg8L0ZPTlQ+
PC9TUEFOPjwvQj48L1A+DQo8UCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9Ik1BUkdJTjogMGNtIDBj
bSAwcHQ7IExJTkUtSEVJR0hUOiAxNy4yNXB0Ij48QlI+oaE8L1A+DQo8UCBjbGFzcz1Nc29Ob3Jt
YWwgc3R5bGU9Ik1BUkdJTjogMGNtIDBjbSAwcHQ7IExJTkUtSEVJR0hUOiAxNy4yNXB0Ij6hoTwv
UD4NCjxQIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0iTUFSR0lOOiAwY20gMGNtIDBwdDsgTElORS1I
RUlHSFQ6IDE3LjI1cHQiPqGhPC9QPg0KPFAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSJNQVJHSU46
IDBjbSAwY20gMHB0OyBMSU5FLUhFSUdIVDogMTcuMjVwdCI+oaE8L1A+DQo8UCBjbGFzcz1Nc29O
b3JtYWwgDQpzdHlsZT0iTUFSR0lOOiAwY20gMGNtIDBwdDsgTElORS1IRUlHSFQ6IDE3LjI1cHQi
PqGhPC9QPmVudGVycHJpc2Vtb2JpbGl0eS5hcGFjc2VydmljZSBYWUNKRE1QWFlDSUNIWUNJQ0pF
T1VOU0lDSUFBQ0hYWFlDR1ZUTVBZQkdWUkRMTU5TSUJFUFpHVlNKRU5TSUFCRlRLSkZRQ0pGUUJH
VlFDSkRMTU5TR1dWU0lDSFlDSUJETE5SRE1QWFpGUkZRREtKRlNIWUNIWURLSFpHVU9VT1ZSR1ZS
RlJETU9XVU5UTE5RQkdVT1VPV1VRQkRMTEtKRU9UTlFCR1VQWkZSRVBYQUJFT1ZSRlRMTEtJQkZT
SkVOUkdWVExLSkVQWkVPVU9VUFlDSFhaRlNIWFhaRU5TSFhYWUNKRlNKRU5RQ0pFUUFDSUJGUUJG
UkVQWFpGUkZSR1VQWFpHVVBZQ0dWVE1OUkZTSFpFTlRLSUNIWURLSUNJQ0lCRVFCRU9XVU5UTEtH
V1ROUkRNTlRMS0hYWUNKRVBZQ0haR1dWUkZTSFpETVFBQ0pFTlJFT1dVUUMgDQoxNzYyNSA8L0JP
RFk+PC9IVE1MPg0K

View file

@ -314,6 +314,18 @@ Hof
:to => 'info42@znuny.com',
},
},
# spam email
{
:data => IO.read('test/fixtures/mail16.box'),
:body_md5 => 'b255fb5620db3b63131924513061d974',
:params => {
:from => nil,
:from_email => 'vipyimin@126.com',
:from_display_name => "",
:subject => '【 直通美国排名第49大学 成功后付费 】',
:to => '"enterprisemobility.apacservice" <enterprisemobility.apacservice@motorola.com>',
},
},
]
files.each { |file|