jpmobile 3.0.5 → 3.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/VERSION.yml +1 -1
- data/jpmobile.gemspec +1 -1
- data/lib/jpmobile/mail.rb +45 -27
- data/lib/jpmobile/mailer.rb +1 -1
- data/lib/jpmobile/mobile/abstract_mobile.rb +8 -2
- data/lib/jpmobile/util.rb +32 -0
- data/spec/unit/email-fixtures/bounce_with_utf8_part.eml +42 -0
- data/spec/unit/email-fixtures/iphone-mail3.eml +56 -0
- data/spec/unit/email-fixtures/iphone-message.eml +27 -0
- data/spec/unit/mail_spec.rb +69 -0
- data/spec/unit/receive_mail_spec.rb +46 -0
- data/spec/unit/util_spec.rb +19 -0
- data/spec/unit/variants_spec.rb +128 -0
- data/test/rails/overrides/spec/fixtures/mobile_mailer/bounced-jp.eml +72 -0
- data/test/rails/overrides/spec/mailers/mobile_mailer_spec.rb +10 -0
- metadata +7 -2
data/VERSION.yml
CHANGED
data/jpmobile.gemspec
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{jpmobile}
|
8
|
-
s.version = "3.0.
|
8
|
+
s.version = "3.0.6"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Yoji Shidara", "Shin-ichiro OGAWA"]
|
data/lib/jpmobile/mail.rb
CHANGED
@@ -18,7 +18,7 @@ module Mail
|
|
18
18
|
|
19
19
|
# change encoding
|
20
20
|
def self.b_value_encode(str, encoding)
|
21
|
-
str = Jpmobile::Util.encode(str, encoding)
|
21
|
+
str = Jpmobile::Util.encode(str, encoding.to_s)
|
22
22
|
[Ruby19.encode_base64(str), encoding]
|
23
23
|
end
|
24
24
|
end
|
@@ -48,9 +48,10 @@ module Mail
|
|
48
48
|
if @mobile = m
|
49
49
|
@charset = m.mail_charset(@charset)
|
50
50
|
|
51
|
-
if
|
52
|
-
|
53
|
-
|
51
|
+
if self.body
|
52
|
+
self.body.content_type_with_jpmobile = self.content_type
|
53
|
+
self.body.charset = @charset
|
54
|
+
self.body.mobile = m
|
54
55
|
end
|
55
56
|
end
|
56
57
|
end
|
@@ -60,7 +61,7 @@ module Mail
|
|
60
61
|
header['subject'].mobile = @mobile if header['subject']
|
61
62
|
header['from'].mobile = @mobile if header['from']
|
62
63
|
header['to'].mobile = @mobile if header['to']
|
63
|
-
self.charset = @mobile.mail_charset
|
64
|
+
self.charset = @mobile.mail_charset
|
64
65
|
|
65
66
|
ready_to_send!
|
66
67
|
|
@@ -116,17 +117,18 @@ module Mail
|
|
116
117
|
if @mobile
|
117
118
|
@body.charset = @charset
|
118
119
|
@body.mobile = @mobile
|
120
|
+
@body.content_type_with_jpmobile = self.content_type
|
119
121
|
|
120
122
|
if has_content_transfer_encoding? and
|
121
|
-
["base64", "quoted-printable"].include?(content_transfer_encoding) and
|
123
|
+
["base64", "quoted-printable"].include?(self.content_transfer_encoding) and
|
122
124
|
["text"].include?(@mobile_main_type)
|
123
125
|
@body.decode_transfer_encoding
|
124
126
|
end
|
125
127
|
|
126
128
|
if @body.multipart?
|
127
129
|
@body.parts.each do |p|
|
128
|
-
p.charset = @charset
|
129
|
-
p.mobile
|
130
|
+
p.charset = @mobile.mail_charset(p.charset)
|
131
|
+
p.mobile = @mobile
|
130
132
|
end
|
131
133
|
end
|
132
134
|
end
|
@@ -272,7 +274,16 @@ module Mail
|
|
272
274
|
end
|
273
275
|
end
|
274
276
|
|
275
|
-
if @body_part_jpmobile and @mobile
|
277
|
+
if @body_part_jpmobile and @mobile and !@charset.blank?
|
278
|
+
if ["base64", "quoted-printable"].include?(self.content_transfer_encoding) and
|
279
|
+
self.content_type.match(/text/)
|
280
|
+
@body_part_jpmobile = Jpmobile::Util.decode(@body_part_jpmobile, self.content_transfer_encoding, @charset)
|
281
|
+
self.content_transfer_encoding = @mobile.class::MAIL_CONTENT_TRANSFER_ENCODING
|
282
|
+
end
|
283
|
+
unless Jpmobile::Util.check_charset(@body_part_jpmobile, @charset)
|
284
|
+
@body_part_jpmobile = Jpmobile::Util.correct_encoding(@body_part_jpmobile)
|
285
|
+
@charset = @body_part_jpmobile.encoding.to_s
|
286
|
+
end
|
276
287
|
@body_part_jpmobile = @mobile.decode_transfer_encoding(@body_part_jpmobile, @charset)
|
277
288
|
end
|
278
289
|
end
|
@@ -315,7 +326,7 @@ module Mail
|
|
315
326
|
end
|
316
327
|
|
317
328
|
class Body
|
318
|
-
attr_accessor :mobile
|
329
|
+
attr_accessor :mobile, :content_type_with_jpmobile
|
319
330
|
|
320
331
|
# convert encoding
|
321
332
|
def encoded_with_jpmobile(transfer_encoding = '8bit')
|
@@ -323,10 +334,16 @@ module Mail
|
|
323
334
|
if @mobile.to_mail_body_encoded?(@raw_source)
|
324
335
|
@raw_source
|
325
336
|
elsif Jpmobile::Util.ascii_8bit?(@raw_source)
|
326
|
-
|
327
|
-
|
337
|
+
_raw_source = if transfer_encoding == encoding
|
338
|
+
@raw_source
|
339
|
+
else
|
340
|
+
enc = Mail::Encodings::get_encoding(get_best_encoding(transfer_encoding))
|
341
|
+
enc.encode(@raw_source)
|
342
|
+
end
|
343
|
+
Jpmobile::Util.force_encode(_raw_source, nil, @charset)
|
328
344
|
else
|
329
|
-
|
345
|
+
case transfer_encoding
|
346
|
+
when /quoted-printable/
|
330
347
|
# [str].pack("M").gsub(/\n/, "\r\n")
|
331
348
|
Jpmobile::Util.force_encode([@mobile.to_mail_body(Jpmobile::Util.force_encode(@raw_source, @charset, Jpmobile::Util::UTF8))].pack("M").gsub(/\n/, "\r\n"), Jpmobile::Util::BINARY, @charset)
|
332
349
|
# @mobile.to_mail_body(Jpmobile::Util.force_encode(@raw_source, @charset, Jpmobile::Util::UTF8))
|
@@ -351,24 +368,25 @@ module Mail
|
|
351
368
|
def mobile=(m)
|
352
369
|
@mobile = m
|
353
370
|
|
371
|
+
if ["base64", "quoted-printable"].include?(self.encoding) and
|
372
|
+
/text/.match(self.content_type_with_jpmobile)
|
373
|
+
self.decode_transfer_encoding
|
374
|
+
end
|
375
|
+
|
354
376
|
if self.multipart? and @mobile
|
355
377
|
self.parts.each do |part|
|
356
|
-
part.charset = @charset
|
378
|
+
part.charset = @mobile.mail_charset(part.charset)
|
357
379
|
part.mobile = @mobile
|
358
|
-
part.body.charset =
|
380
|
+
part.body.charset = part.charset
|
359
381
|
part.body.mobile = @mobile
|
360
382
|
end
|
361
383
|
end
|
362
384
|
end
|
363
385
|
|
364
386
|
def decode_transfer_encoding
|
365
|
-
_raw_source =
|
366
|
-
_extract_charset = Jpmobile::Util.extract_charset(_raw_source)
|
367
|
-
unless _extract_charset.blank? or _extract_charset == @charset
|
368
|
-
@charset = Jpmobile::Util.extract_charset(_raw_source)
|
369
|
-
end
|
370
|
-
_raw_source = Jpmobile::Util.set_encoding(_raw_source, @charset)
|
387
|
+
_raw_source = Jpmobile::Util.decode(@raw_source, self.encoding, @charset)
|
371
388
|
@raw_source = @mobile.decode_transfer_encoding(_raw_source, @charset)
|
389
|
+
self.encoding = 'text'
|
372
390
|
end
|
373
391
|
|
374
392
|
def preamble_with_jpmobile
|
@@ -469,15 +487,15 @@ module Mail
|
|
469
487
|
|
470
488
|
def mobile=(m)
|
471
489
|
if @mobile = m
|
472
|
-
self.charset = @mobile.mail_charset
|
473
|
-
self.value
|
490
|
+
self.charset = @mobile.mail_charset
|
491
|
+
self.value = @jpmobile_raw_text
|
474
492
|
self.parse
|
475
493
|
end
|
476
494
|
end
|
477
495
|
|
478
496
|
def encoded_with_jpmobile
|
479
497
|
if @mobile
|
480
|
-
self.charset = @mobile.mail_charset
|
498
|
+
self.charset = @mobile.mail_charset
|
481
499
|
end
|
482
500
|
|
483
501
|
encoded_without_jpmobile
|
@@ -498,15 +516,15 @@ module Mail
|
|
498
516
|
|
499
517
|
def mobile=(m)
|
500
518
|
if @mobile = m
|
501
|
-
self.charset = @mobile.mail_charset
|
502
|
-
self.value
|
519
|
+
self.charset = @mobile.mail_charset
|
520
|
+
self.value = @jpmobile_raw_text
|
503
521
|
self.parse
|
504
522
|
end
|
505
523
|
end
|
506
524
|
|
507
525
|
def encoded_with_jpmobile
|
508
526
|
if @mobile
|
509
|
-
self.charset = @mobile.mail_charset
|
527
|
+
self.charset = @mobile.mail_charset
|
510
528
|
end
|
511
529
|
|
512
530
|
encoded_without_jpmobile
|
data/lib/jpmobile/mailer.rb
CHANGED
@@ -101,11 +101,16 @@ module Jpmobile::Mobile
|
|
101
101
|
|
102
102
|
@_variants || []
|
103
103
|
end
|
104
|
+
def mail_variants
|
105
|
+
return @_mail_variants if @_mail_variants
|
106
|
+
|
107
|
+
@_mail_variants = variants == ['mobile'] ? [] : variants
|
108
|
+
end
|
104
109
|
|
105
110
|
# メール送信用
|
106
111
|
def to_mail_subject(str)
|
107
112
|
Jpmobile::Util.fold_text(Jpmobile::Emoticon.unicodecr_to_utf8(str)).
|
108
|
-
map{|text| "=?#{mail_charset}?B?" + [to_mail_encoding(text)].pack('m').
|
113
|
+
map{|text| "=?#{mail_charset}?B?" + [to_mail_encoding(text)].pack('m').gsub(/\n/, '') + "?=" }.
|
109
114
|
join("\n\s")
|
110
115
|
end
|
111
116
|
def to_mail_body(str)
|
@@ -113,7 +118,8 @@ module Jpmobile::Mobile
|
|
113
118
|
end
|
114
119
|
def mail_charset(charset = nil)
|
115
120
|
# (charset.nil? or charset == "") ? self.class::MAIL_CHARSET : charset
|
116
|
-
self.class::MAIL_CHARSET
|
121
|
+
# self.class::MAIL_CHARSET
|
122
|
+
charset.nil? || charset == '' || charset =~ /US-ASCII/i ? self.class::MAIL_CHARSET : charset
|
117
123
|
end
|
118
124
|
def content_transfer_encoding(headers)
|
119
125
|
transfer_encoding = headers['Content-Transfer-Encoding']
|
data/lib/jpmobile/util.rb
CHANGED
@@ -400,5 +400,37 @@ module Jpmobile
|
|
400
400
|
end
|
401
401
|
result
|
402
402
|
end
|
403
|
+
|
404
|
+
def decode(str, encoding, charset)
|
405
|
+
_str = case encoding
|
406
|
+
when /quoted-printable/i
|
407
|
+
str.unpack('M').first.strip
|
408
|
+
when /base64/i
|
409
|
+
str.unpack('m').first.strip
|
410
|
+
else
|
411
|
+
str
|
412
|
+
end
|
413
|
+
|
414
|
+
_extract_charset = Jpmobile::Util.extract_charset(_str)
|
415
|
+
charset = _extract_charset unless _extract_charset.blank? or _extract_charset == charset
|
416
|
+
Jpmobile::Util.set_encoding(_str, charset)
|
417
|
+
end
|
418
|
+
|
419
|
+
def check_charset(str, charset)
|
420
|
+
if Object.const_defined?(:Encoding)
|
421
|
+
# use NKF.guess
|
422
|
+
::Encoding.compatible?(NKF.guess(str), ::Encoding.find(charset))
|
423
|
+
else
|
424
|
+
true
|
425
|
+
end
|
426
|
+
end
|
427
|
+
|
428
|
+
def correct_encoding(str)
|
429
|
+
if str.encoding != ::Encoding::ASCII_8BIT and NKF.guess(str) != str.encoding
|
430
|
+
str.force_encoding(NKF.guess(str))
|
431
|
+
end
|
432
|
+
|
433
|
+
str
|
434
|
+
end
|
403
435
|
end
|
404
436
|
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
Return-Path: <au@ezweb.ne.jp>
|
2
|
+
Delivered-To: ogawa@jpmobile-info.co.jp
|
3
|
+
Subject: =?iso-2022-jp?B?RndkOiAbJEIhWhsoQk51cnNlcnlNYWlsGyRCIVtGfEZ8GyhC?=
|
4
|
+
From: au@ezweb.ne.jp
|
5
|
+
Content-Type: multipart/alternative;
|
6
|
+
boundary=Apple-Mail-453BF7C8-E087-4CEB-A163-18A4B0CBB56C
|
7
|
+
Message-Id: <5C2DBDE0-7AE2-4BD2-B932-97B59EAFED85@ezweb.ne.jp>
|
8
|
+
Date: Tue, 31 Jul 2012 10:44:23 +0900 (JST)
|
9
|
+
To: test@jpmobile-info.org
|
10
|
+
Content-Transfer-Encoding: 7bit
|
11
|
+
MIME-Version: 1.0
|
12
|
+
|
13
|
+
--Apple-Mail-453BF7C8-E087-4CEB-A163-18A4B0CBB56C
|
14
|
+
Content-Transfer-Encoding: quoted-printable
|
15
|
+
Content-Type: text/plain;
|
16
|
+
charset=iso-2022-jp
|
17
|
+
|
18
|
+
|
19
|
+
|
20
|
+
iPhone=1B$B$+$iAw?.=1B(B
|
21
|
+
|
22
|
+
Begin forwarded message:
|
23
|
+
|
24
|
+
> =1B$B$H$j$"$($:#H#T#M#L$NK\J8$G=1B(B
|
25
|
+
> =1B$B$"$l$P$$$$2DG=3D@-$r9MN8$7$F$O=1B(B
|
26
|
+
> =1B$B8+$?$,$d$O$j$Y!<$9$m$/$h$s!J>P!K$G=1B(B
|
27
|
+
> =1B$B$"$l$P$$$$$h$&$J5$$,=1B(B
|
28
|
+
> =1B$B$7$?$N$G%@%_!<$NJ8;zNs$r=1B(B
|
29
|
+
> =1B$B9M$($F8+$kD+!#=1B(B=
|
30
|
+
|
31
|
+
--Apple-Mail-453BF7C8-E087-4CEB-A163-18A4B0CBB56C
|
32
|
+
Content-Transfer-Encoding: base64
|
33
|
+
Content-Type: text/html;
|
34
|
+
charset=utf-8
|
35
|
+
|
36
|
+
44Go44KK44GC44GI44Ga77yo77y077yt77ys44Gu5pys5paH44Gn44GC44KM
|
37
|
+
44Gw44GE44GE5Y+v6IO95oCn44KS6ICD5oWu44GX44Gm44Gv6KaL44Gf44GM
|
38
|
+
44KE44Gv44KK44G544O844GZ44KN44GP44KI44KT77yI56yR77yJ44Gn44GC
|
39
|
+
44KM44Gw44GE44GE44KI44GG44Gq5rCX44GM44GX44Gf44Gu44Gn44OA44Of
|
40
|
+
44O844Gu5paH5a2X5YiX44KS6ICD44GI44Gm6KaL44KL5pyd44CC
|
41
|
+
--Apple-Mail-453BF7C8-E087-4CEB-A163-18A4B0CBB56C--
|
42
|
+
|
@@ -0,0 +1,56 @@
|
|
1
|
+
X-Mozilla-Status: 0011
|
2
|
+
X-Mozilla-Status2: 00000000
|
3
|
+
X-Mozilla-Keys:
|
4
|
+
Return-Path: <au@ezweb.ne.jp>
|
5
|
+
Delivered-To: au@ezweb.ne.jp
|
6
|
+
References: <503ef27994050_75cf4344bfe77fe@jpmobile.jp.mail>
|
7
|
+
In-Reply-To: <503ef27994050_75cf4344bfe77fe@jpmobile.jp.mail>
|
8
|
+
Mime-Version: 1.0 (1.0)
|
9
|
+
Content-Transfer-Encoding: base64
|
10
|
+
Content-Type: text/plain;
|
11
|
+
charset=utf-8
|
12
|
+
Message-Id: <6D015993-FD10-4EE9-8B60-A4588D554649@ezweb.ne.jp>
|
13
|
+
X-Mailer: iPhone Mail (9B206)
|
14
|
+
From: "au@ezweb.ne.jp" <au@ezweb.ne.jp>
|
15
|
+
Subject: =?iso-2022-jp?B?UmU6IBskQiFaGyhCTktTQxskQiFbGyhCdGVzdA==?=
|
16
|
+
Date: Thu, 30 Aug 2012 14:49:20 +0900
|
17
|
+
To: "info@jpmobile.jp" <info@jpmobile.jp>
|
18
|
+
|
19
|
+
DQoNCmlQaG9uZeOBi+OCiemAgeS/oeKXi+KXjg0KDQpPbiAyMDEyLzA4LzMw
|
20
|
+
LCBhdCAxMzo1NiwgaW5mb0BqcG1vYmlsZS5qcCB3cm90ZToNCg0KPiDmnKzm
|
21
|
+
lofmlLnooYzjgarjgZfvvL/vvJXvvJHvvJLmloflrZfvvL/jgYLjgYLjgYLj
|
22
|
+
gYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLj
|
23
|
+
gYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLj
|
24
|
+
gYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLj
|
25
|
+
gYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLj
|
26
|
+
gYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLj
|
27
|
+
gYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLj
|
28
|
+
gYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLj
|
29
|
+
gYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLj
|
30
|
+
gYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLj
|
31
|
+
gYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLj
|
32
|
+
gYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLj
|
33
|
+
gYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLj
|
34
|
+
gYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLj
|
35
|
+
gYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLj
|
36
|
+
gYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLj
|
37
|
+
gYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLj
|
38
|
+
gYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLj
|
39
|
+
gYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLj
|
40
|
+
gYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLj
|
41
|
+
gYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLj
|
42
|
+
gYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLj
|
43
|
+
gYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLj
|
44
|
+
gYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLj
|
45
|
+
gYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLj
|
46
|
+
gYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLj
|
47
|
+
gYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLj
|
48
|
+
gYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLj
|
49
|
+
gYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLj
|
50
|
+
gYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLj
|
51
|
+
gYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLj
|
52
|
+
gYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLj
|
53
|
+
gYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLjgYLvv73vv73ilrPi
|
54
|
+
lrPilrPilrPilrPilrPilrPilrPilrPilrPilrPilrPilrPilrPilrPilrPi
|
55
|
+
lrPilrPvv70NCg==
|
56
|
+
|
@@ -0,0 +1,27 @@
|
|
1
|
+
X-Account-Key: account2
|
2
|
+
X-UIDL: 1345598846.M744553P8903V000000000000FD00I00000000C0120BDF_0.jpjp.jp,S=1186.000031434a023554
|
3
|
+
X-Mozilla-Status: 0001
|
4
|
+
X-Mozilla-Status2: 00000000
|
5
|
+
X-Mozilla-Keys:
|
6
|
+
Return-Path: <au@ezweb.ne.jp>
|
7
|
+
Delivered-To: ogawa@jpmobile.jp
|
8
|
+
Received: (qmail 8893 invoked by SAV 20120821.022 by uid 0); 22 Aug 2012 10:27:26 +0900
|
9
|
+
Received: from unknown (HELO mmsmta08.ezweb.ne.jp) (59.135.39.241)
|
10
|
+
by dc6.etius.jp (124.146.201.109) with ESMTPS (DHE-RSA-AES256-SHA encrypted); 22 Aug 2012 10:27:26 +0900
|
11
|
+
Received-SPF: pass (dc6.etius.jp: SPF record at spf-nm.ezweb.ne.jp designates 59.135.39.241 as permitted sender)
|
12
|
+
Received: from cm (pl0_4-mms [172.22.116.39])
|
13
|
+
by mmsmta08.ezweb.ne.jp (Sentrion-MTA-4.1.0/Switch-3.3.4) with SMTP id q7M1RQgt001822
|
14
|
+
for <info@jpmobile.jp>; Wed, 22 Aug 2012 10:27:26 +0900
|
15
|
+
From:au@ezweb.ne.jp
|
16
|
+
To:ogawa@jpmobile.jp
|
17
|
+
Subject:=?UTF-8?B?aVBob25lIGF1IOODoeODg+OCu+ODvOOCuA==?=
|
18
|
+
Message-ID: <212212358846052174@-212212358846052175>
|
19
|
+
Date: Tue, 22 Aug 2012 01:27:26 +0000
|
20
|
+
MIME-Version:1.0
|
21
|
+
Content-Type: text/plain; charset=utf-8
|
22
|
+
Content-Transfer-Encoding: base64
|
23
|
+
|
24
|
+
JVvlnJLlhZDlkI1dJeOBriVb5L+d6K236ICF5ZCNXSUg5qeYCgrmlr3oqK3jgavpgIHkv6HjgIIK
|
25
|
+
6YG45oqeMeOBryVb44Ki44OJ44Os44K5MV0l44G4CumBuOaKnjLjga8lW+OCouODieODrOOCuTJd
|
26
|
+
JeOBuArov5Tkv6HjgZfjgabkuIvjgZXjgYTjgIIKCmlQaG9uZSBhdSDjg6Hjg4Pjgrvjg7zjgrg=
|
27
|
+
|
data/spec/unit/mail_spec.rb
CHANGED
@@ -255,6 +255,31 @@ describe "Jpmobile::Mail" do
|
|
255
255
|
end
|
256
256
|
end
|
257
257
|
|
258
|
+
describe "long subject with half-characters" do
|
259
|
+
before(:each) do
|
260
|
+
@mail = Mail.new
|
261
|
+
@mail.subject = "西暦2012年09月03日は今日になるわけだが10時16分現在のこの時間ではどうかな"
|
262
|
+
@mail.body = "株式会社・・"
|
263
|
+
@mail.from = "info@jpmobile-rails.org"
|
264
|
+
end
|
265
|
+
|
266
|
+
describe "AbstractMobile" do
|
267
|
+
before(:each) do
|
268
|
+
@mobile = Jpmobile::Mobile::AbstractMobile.new(nil, nil)
|
269
|
+
@mail.mobile = @mobile
|
270
|
+
@mail.to = "むすめふさほせ <info+to@jpmobile-rails.org>"
|
271
|
+
end
|
272
|
+
|
273
|
+
context "to_s" do
|
274
|
+
it "should contain encoded subject" do
|
275
|
+
ascii_8bit(@mail.to_s).should match(Regexp.compile(Regexp.escape("=?ISO-2022-JP?B?GyRCQD5OcRsoQjIwMTIbJEJHLxsoQjA5GyRCN24bKEIwMxskQkZ8JE86IxsoQg==?=")))
|
276
|
+
ascii_8bit(@mail.to_s).should match(Regexp.compile(Regexp.escape("=?ISO-2022-JP?B?GyRCRnwkSyRKJGskbyQxJEAkLBsoQjEwGyRCO34bKEIxNhskQkosOD0bKEI=?=")))
|
277
|
+
ascii_8bit(@mail.to_s).should match(Regexp.compile(Regexp.escape("=?ISO-2022-JP?B?GyRCOl8kTiQzJE47fjRWJEckTyRJJCYkKyRKGyhC?=")))
|
278
|
+
end
|
279
|
+
end
|
280
|
+
end
|
281
|
+
end
|
282
|
+
|
258
283
|
context "with attachments" do
|
259
284
|
before(:each) do
|
260
285
|
@mobile = Jpmobile::Mobile::AbstractMobile.new(nil, nil)
|
@@ -278,6 +303,14 @@ describe "Jpmobile::Mail" do
|
|
278
303
|
@mail.to_s
|
279
304
|
}.should_not raise_error
|
280
305
|
end
|
306
|
+
|
307
|
+
it "should encodes itself successfully with an UTF-8 filename attachment" do
|
308
|
+
@mail.attachments.inline['日本語のファイル名です.jpg'] = @photo
|
309
|
+
|
310
|
+
lambda {
|
311
|
+
@mail.to_s
|
312
|
+
}.should_not raise_error
|
313
|
+
end
|
281
314
|
end
|
282
315
|
|
283
316
|
context "encoding conversion" do
|
@@ -317,4 +350,40 @@ describe "Jpmobile::Mail" do
|
|
317
350
|
Mail::TestMailer.deliveries.size
|
318
351
|
end
|
319
352
|
end
|
353
|
+
|
354
|
+
context 'sending with carrier from' do
|
355
|
+
before do
|
356
|
+
@mail = Mail.new
|
357
|
+
@mail.subject = "万葉"
|
358
|
+
@mail.to = "ちはやふる <info@jpmobile-rails.org>"
|
359
|
+
end
|
360
|
+
|
361
|
+
it 'should convert content-transfer-encoding' do
|
362
|
+
mobile = Jpmobile::Mobile::Au.new(nil, nil)
|
363
|
+
@mail.content_transfer_encoding = 'base64'
|
364
|
+
@mail.body = ['ほげ'].pack('m')
|
365
|
+
@mail.charset = 'UTF-8'
|
366
|
+
|
367
|
+
@mail.mobile = mobile
|
368
|
+
@mail.from = '<えーゆー> au@ezweb.ne.jp'
|
369
|
+
|
370
|
+
@mail.encoded.should match(/content-transfer-encoding: 7bit/i)
|
371
|
+
end
|
372
|
+
|
373
|
+
it 'should not convert content-transfer-encoding with BINARY' do
|
374
|
+
mobile = Jpmobile::Mobile::Au.new(nil, nil)
|
375
|
+
data = ['ほげ'].pack('m').strip
|
376
|
+
|
377
|
+
@mail.content_transfer_encoding = 'base64'
|
378
|
+
@mail.content_type = 'image/jpeg'
|
379
|
+
@mail.body = data
|
380
|
+
@mail.charset = 'UTF-8'
|
381
|
+
|
382
|
+
@mail.mobile = mobile
|
383
|
+
@mail.from = '<えーゆー> au@ezweb.ne.jp'
|
384
|
+
|
385
|
+
@mail.encoded.should match(/content-transfer-encoding: base64/i)
|
386
|
+
@mail.encoded.should match(data)
|
387
|
+
end
|
388
|
+
end
|
320
389
|
end
|
@@ -148,6 +148,14 @@ describe "Jpmobile::Mail#receive" do
|
|
148
148
|
end
|
149
149
|
end
|
150
150
|
end
|
151
|
+
|
152
|
+
context 'bounced mail' do
|
153
|
+
it 'should parse sub-part charset correctly' do
|
154
|
+
@mail = Mail.new(open(File.join(File.expand_path(File.dirname(__FILE__)), "email-fixtures/bounce_with_utf8_part.eml")).read)
|
155
|
+
@mail.parts.first.charset.should match(/iso-2022-jp/i)
|
156
|
+
@mail.parts.last.charset.should match(/utf-8/i)
|
157
|
+
end
|
158
|
+
end
|
151
159
|
end
|
152
160
|
|
153
161
|
describe "Docomo" do
|
@@ -234,6 +242,32 @@ describe "Jpmobile::Mail#receive" do
|
|
234
242
|
@mail = Mail.new(open(File.join(File.expand_path(File.dirname(__FILE__)), "email-fixtures/au-decomail2.eml")).read)
|
235
243
|
}.should_not raise_error
|
236
244
|
end
|
245
|
+
|
246
|
+
context 'From au iPhone' do
|
247
|
+
it 'charset should be UTF-8' do
|
248
|
+
@mail = Mail.new(open(File.join(File.expand_path(File.dirname(__FILE__)), "email-fixtures/iphone-message.eml")).read)
|
249
|
+
@mail.mobile.should be_a(Jpmobile::Mobile::Au)
|
250
|
+
@mail.charset.should match(/utf-8/i)
|
251
|
+
end
|
252
|
+
|
253
|
+
it 'should be encoded correctly' do
|
254
|
+
@mail = Mail.new(open(File.join(File.expand_path(File.dirname(__FILE__)), "email-fixtures/iphone-message.eml")).read)
|
255
|
+
@mail.encoded
|
256
|
+
end
|
257
|
+
end
|
258
|
+
|
259
|
+
context 'From iPad' do
|
260
|
+
it 'charset should be UTF-8' do
|
261
|
+
@mail = Mail.new(open(File.join(File.expand_path(File.dirname(__FILE__)), "email-fixtures/iphone-mail3.eml")).read)
|
262
|
+
@mail.mobile.should be_a(Jpmobile::Mobile::AbstractMobile)
|
263
|
+
@mail.charset.should match(/utf-8/i)
|
264
|
+
end
|
265
|
+
|
266
|
+
it 'should be encoded correctly' do
|
267
|
+
@mail = Mail.new(open(File.join(File.expand_path(File.dirname(__FILE__)), "email-fixtures/iphone-mail3.eml")).read)
|
268
|
+
@mail.encoded
|
269
|
+
end
|
270
|
+
end
|
237
271
|
end
|
238
272
|
|
239
273
|
describe "Softbank" do
|
@@ -302,6 +336,18 @@ describe "Jpmobile::Mail#receive" do
|
|
302
336
|
end
|
303
337
|
end
|
304
338
|
|
339
|
+
describe 'bounced mail' do
|
340
|
+
context "has jp address" do
|
341
|
+
before(:each) do
|
342
|
+
@mail = Mail.new(open(File.join(File.expand_path(File.dirname(__FILE__)), "../../test/rails/overrides/spec/fixtures/mobile_mailer/bounced-jp.eml")).read)
|
343
|
+
end
|
344
|
+
|
345
|
+
it "mobile should abstract mobile" do
|
346
|
+
@mail.mobile.should be_a Jpmobile::Mobile::AbstractMobile
|
347
|
+
end
|
348
|
+
end
|
349
|
+
end
|
350
|
+
|
305
351
|
describe "non-Japanese mail" do
|
306
352
|
context "us-ascii" do
|
307
353
|
before(:each) do
|
data/spec/unit/util_spec.rb
CHANGED
@@ -132,4 +132,23 @@ describe Jpmobile::Util do
|
|
132
132
|
hash[0xE6FB].should == 0x1F526
|
133
133
|
end
|
134
134
|
end
|
135
|
+
|
136
|
+
describe 'check_charset' do
|
137
|
+
it 'returns true if compatible' do
|
138
|
+
str = 'ABC'.force_encoding('ASCII-8BIT')
|
139
|
+
check_charset(str, 'UTF-8').should be_true
|
140
|
+
end
|
141
|
+
|
142
|
+
it 'returns false if incompatible' do
|
143
|
+
str = '再現'.encode('ISO-2022-JP')
|
144
|
+
check_charset(str, 'UTF-8').should be_false
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
describe 'correct_encoding' do
|
149
|
+
it 'updates encoding correctly' do
|
150
|
+
str = '再現'.force_encoding('ISO-2022-JP')
|
151
|
+
correct_encoding(str).encoding.should == Encoding::UTF_8
|
152
|
+
end
|
153
|
+
end
|
135
154
|
end
|
@@ -0,0 +1,128 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require File.expand_path(File.join(File.dirname(__FILE__), 'spec_helper'))
|
3
|
+
require 'mail'
|
4
|
+
require 'jpmobile/mail'
|
5
|
+
|
6
|
+
describe Jpmobile::Mobile::AbstractMobile do
|
7
|
+
subject{ Jpmobile::Mobile::AbstractMobile.new(nil, nil) }
|
8
|
+
|
9
|
+
describe '#variants' do
|
10
|
+
its(:variants){ should === ['mobile'] }
|
11
|
+
end
|
12
|
+
|
13
|
+
describe '#mail_variants' do
|
14
|
+
its(:mail_variants){ should == [] }
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe Jpmobile::Mobile::Docomo do
|
19
|
+
subject{ Jpmobile::Mobile::Docomo.new(nil, nil) }
|
20
|
+
|
21
|
+
describe '#variants' do
|
22
|
+
its(:variants){ should == ['mobile_docomo', 'mobile'] }
|
23
|
+
end
|
24
|
+
|
25
|
+
describe '#mail_variants' do
|
26
|
+
it 'have same value as #variants' do
|
27
|
+
subject.mail_variants == subject.variants
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe Jpmobile::Mobile::Au do
|
33
|
+
subject{ Jpmobile::Mobile::Au.new(nil, nil) }
|
34
|
+
|
35
|
+
describe '#variants' do
|
36
|
+
its(:variants){ should == ['mobile_au', 'mobile'] }
|
37
|
+
end
|
38
|
+
|
39
|
+
describe '#mail_variants' do
|
40
|
+
it 'have same value as #variants' do
|
41
|
+
subject.mail_variants == subject.variants
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
describe Jpmobile::Mobile::Softbank do
|
47
|
+
subject{ Jpmobile::Mobile::Softbank.new(nil, nil) }
|
48
|
+
|
49
|
+
describe '#variants' do
|
50
|
+
its(:variants){ should == ['mobile_softbank', 'mobile'] }
|
51
|
+
end
|
52
|
+
|
53
|
+
describe '#mail_variants' do
|
54
|
+
it 'have same value as #variants' do
|
55
|
+
subject.mail_variants == subject.variants
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
describe Jpmobile::Mobile::Android do
|
61
|
+
subject{ Jpmobile::Mobile::Android.new(nil, nil) }
|
62
|
+
|
63
|
+
describe '#variants' do
|
64
|
+
its(:variants){ should == ['smart_phone_android', 'smart_phone'] }
|
65
|
+
end
|
66
|
+
|
67
|
+
describe '#mail_variants' do
|
68
|
+
it 'have same value as #variants' do
|
69
|
+
subject.mail_variants == subject.variants
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
describe Jpmobile::Mobile::AndroidTablet do
|
75
|
+
subject{ Jpmobile::Mobile::AndroidTablet.new(nil, nil) }
|
76
|
+
|
77
|
+
describe '#variants' do
|
78
|
+
its(:variants){ should == ['tablet_android_tablet', 'tablet', 'smart_phone'] }
|
79
|
+
end
|
80
|
+
|
81
|
+
describe '#mail_variants' do
|
82
|
+
it 'have same value as #variants' do
|
83
|
+
subject.mail_variants == subject.variants
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
describe Jpmobile::Mobile::Iphone do
|
89
|
+
subject{ Jpmobile::Mobile::Iphone.new(nil, nil) }
|
90
|
+
|
91
|
+
describe '#variants' do
|
92
|
+
its(:variants) { should == ['smart_phone_iphone', 'smart_phone'] }
|
93
|
+
end
|
94
|
+
|
95
|
+
describe '#mail_variants' do
|
96
|
+
it 'have same value as #variants' do
|
97
|
+
subject.mail_variants == subject.variants
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
describe Jpmobile::Mobile::Ipad do
|
103
|
+
subject{ Jpmobile::Mobile::Ipad.new(nil, nil) }
|
104
|
+
|
105
|
+
describe '#variants' do
|
106
|
+
its(:variants){ should == ['tablet_ipad', 'tablet', 'smart_phone'] }
|
107
|
+
end
|
108
|
+
|
109
|
+
describe '#mail_variants' do
|
110
|
+
it 'have same value as #variants' do
|
111
|
+
subject.mail_variants == subject.variants
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
describe Jpmobile::Mobile::WindowsPhone do
|
117
|
+
subject{ Jpmobile::Mobile::WindowsPhone.new(nil, nil) }
|
118
|
+
|
119
|
+
describe '#variants' do
|
120
|
+
its(:variants){ should == ['smart_phone_windows_phone', 'smart_phone'] }
|
121
|
+
end
|
122
|
+
|
123
|
+
describe '#mail_variants' do
|
124
|
+
it 'have same value as #variants' do
|
125
|
+
subject.mail_variants == subject.variants
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
Return-Path: <>
|
2
|
+
X-Original-To: info@example.jp
|
3
|
+
Delivered-To: info@example.jp
|
4
|
+
Received: by localhost (Postfix)
|
5
|
+
id 081F8161D92; Fri, 17 Aug 2012 23:05:01 +0900 (JST)
|
6
|
+
Date: Fri, 17 Aug 2012 23:05:01 +0900 (JST)
|
7
|
+
From: MAILER-DAEMON@example.jp (Mail Delivery System)
|
8
|
+
Subject: Undelivered Mail Returned to Sender
|
9
|
+
To: info@example.jp
|
10
|
+
Auto-Submitted: auto-replied
|
11
|
+
MIME-Version: 1.0
|
12
|
+
Content-Type: multipart/report; report-type=delivery-status;
|
13
|
+
boundary="EAE03161D91.1345212301/localhost"
|
14
|
+
Message-Id: <20120817140501.081F8161D92@localhost>
|
15
|
+
|
16
|
+
This is a MIME-encapsulated message.
|
17
|
+
|
18
|
+
--EAE03161D91.1345212301/localhost
|
19
|
+
Content-Description: Notification
|
20
|
+
Content-Type: text/plain; charset=us-ascii
|
21
|
+
|
22
|
+
This is the mail system at host localhost.
|
23
|
+
|
24
|
+
I'm sorry to have to inform you that your message could not
|
25
|
+
be delivered to one or more recipients. It's attached below.
|
26
|
+
|
27
|
+
For further assistance, please send mail to postmaster.
|
28
|
+
|
29
|
+
If you do so, please include this problem report. You can
|
30
|
+
delete your own text from the attached returned message.
|
31
|
+
|
32
|
+
The mail system
|
33
|
+
|
34
|
+
<unknown@docomo.ne.jp>: host mfsmax.docomo.ne.jp[203.138.181.112] said: 550
|
35
|
+
Unknown user unknown@docomo.ne.jp (in reply to end of DATA command)
|
36
|
+
|
37
|
+
--EAE03161D91.1345212301/localhost
|
38
|
+
Content-Description: Delivery report
|
39
|
+
Content-Type: message/delivery-status
|
40
|
+
|
41
|
+
Reporting-MTA: dns; localhost
|
42
|
+
X-Postfix-Queue-ID: EAE03161D91
|
43
|
+
X-Postfix-Sender: rfc822; info@example.jp
|
44
|
+
Arrival-Date: Fri, 17 Aug 2012 23:05:00 +0900 (JST)
|
45
|
+
|
46
|
+
Final-Recipient: rfc822; unknown@docomo.ne.jp
|
47
|
+
Action: failed
|
48
|
+
Status: 5.0.0
|
49
|
+
Remote-MTA: dns; mfsmax.docomo.ne.jp
|
50
|
+
Diagnostic-Code: smtp; 550 Unknown user unknown@docomo.ne.jp
|
51
|
+
|
52
|
+
--EAE03161D91.1345212301/localhost
|
53
|
+
Content-Description: Undelivered Message
|
54
|
+
Content-Type: message/rfc822
|
55
|
+
|
56
|
+
Return-Path: <info@example.jp>
|
57
|
+
Received: by localhost (Postfix, from userid 1004)
|
58
|
+
id EAE03161D91; Fri, 17 Aug 2012 23:05:00 +0900 (JST)
|
59
|
+
Date: Fri, 17 Aug 2012 23:05:00 +0900
|
60
|
+
From: info@example.jp
|
61
|
+
To: unknown@docomo.ne.jp
|
62
|
+
Message-ID: <502e4f8c8dc0a_1ed1cbf30467885@mail>
|
63
|
+
Subject: =?Shift_JIS?B?dGVzdA==?=
|
64
|
+
Mime-Version: 1.0
|
65
|
+
Content-Type: text/plain;
|
66
|
+
charset=Shift_JIS
|
67
|
+
Content-Transfer-Encoding: 7bit
|
68
|
+
|
69
|
+
test
|
70
|
+
|
71
|
+
--EAE03161D91.1345212301/localhost--
|
72
|
+
|
@@ -78,6 +78,7 @@ describe MobileMailer do
|
|
78
78
|
raw_mail.should match(/iso-2022-jp/i)
|
79
79
|
raw_mail.should match(Regexp.compile(Regexp.escape(ascii_8bit([utf8_to_jis("題名")].pack('m').strip))))
|
80
80
|
raw_mail.should match(Regexp.compile(Regexp.escape(ascii_8bit(utf8_to_jis("本文")))))
|
81
|
+
raw_mail.should match(/For PC/)
|
81
82
|
end
|
82
83
|
end
|
83
84
|
|
@@ -663,6 +664,15 @@ describe MobileMailer, "receiving" do
|
|
663
664
|
parts.first.body.should match(/テストです/)
|
664
665
|
parts.last.body.raw_source.should match(/テストです/)
|
665
666
|
end
|
667
|
+
|
668
|
+
context 'iPhone' do
|
669
|
+
it 'should parse correctly' do
|
670
|
+
lambda {
|
671
|
+
@mail = MobileMailer.receive(open(File.join(Rails.root, "../../../spec/unit/email-fixtures/iphone-message.eml")).read)
|
672
|
+
@mail.encoded
|
673
|
+
}.should_not raise_error
|
674
|
+
end
|
675
|
+
end
|
666
676
|
end
|
667
677
|
|
668
678
|
describe "softbank(sjis) の場合" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jpmobile
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-
|
13
|
+
date: 2012-10-09 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: jeweler
|
@@ -380,9 +380,12 @@ files:
|
|
380
380
|
- spec/unit/email-fixtures/au-emoji.eml
|
381
381
|
- spec/unit/email-fixtures/au-emoji2.eml
|
382
382
|
- spec/unit/email-fixtures/au-emoji5.eml
|
383
|
+
- spec/unit/email-fixtures/bounce_with_utf8_part.eml
|
383
384
|
- spec/unit/email-fixtures/docomo-emoji.eml
|
384
385
|
- spec/unit/email-fixtures/docomo-gmail-sjis.eml
|
385
386
|
- spec/unit/email-fixtures/docomo-jis.eml
|
387
|
+
- spec/unit/email-fixtures/iphone-mail3.eml
|
388
|
+
- spec/unit/email-fixtures/iphone-message.eml
|
386
389
|
- spec/unit/email-fixtures/pc-mail-multi.eml
|
387
390
|
- spec/unit/email-fixtures/pc-mail-single.eml
|
388
391
|
- spec/unit/email-fixtures/photo.jpg
|
@@ -400,6 +403,7 @@ files:
|
|
400
403
|
- spec/unit/spec_helper.rb
|
401
404
|
- spec/unit/util_spec.rb
|
402
405
|
- spec/unit/valid_ip_spec.rb
|
406
|
+
- spec/unit/variants_spec.rb
|
403
407
|
- test/rails/.gitignore
|
404
408
|
- test/rails/overrides/.rspec
|
405
409
|
- test/rails/overrides/Gemfile
|
@@ -489,6 +493,7 @@ files:
|
|
489
493
|
- test/rails/overrides/spec/fixtures/mobile_mailer/au-emoji.eml
|
490
494
|
- test/rails/overrides/spec/fixtures/mobile_mailer/au-emoji2.eml
|
491
495
|
- test/rails/overrides/spec/fixtures/mobile_mailer/au-emoji5.eml
|
496
|
+
- test/rails/overrides/spec/fixtures/mobile_mailer/bounced-jp.eml
|
492
497
|
- test/rails/overrides/spec/fixtures/mobile_mailer/docomo-emoji.eml
|
493
498
|
- test/rails/overrides/spec/fixtures/mobile_mailer/docomo-gmail-sjis.eml
|
494
499
|
- test/rails/overrides/spec/fixtures/mobile_mailer/docomo-jis.eml
|