mail 2.7.0.rc1 → 2.7.0.rc2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +71 -98
- data/lib/mail.rb +1 -6
- data/lib/mail/attachments_list.rb +5 -2
- data/lib/mail/body.rb +39 -33
- data/lib/mail/check_delivery_params.rb +8 -6
- data/lib/mail/configuration.rb +2 -0
- data/lib/mail/elements/address.rb +19 -18
- data/lib/mail/encodings.rb +89 -31
- data/lib/mail/encodings/7bit.rb +5 -15
- data/lib/mail/encodings/8bit.rb +2 -21
- data/lib/mail/encodings/base64.rb +11 -12
- data/lib/mail/encodings/binary.rb +3 -22
- data/lib/mail/encodings/identity.rb +24 -0
- data/lib/mail/encodings/quoted_printable.rb +6 -6
- data/lib/mail/encodings/transfer_encoding.rb +38 -29
- data/lib/mail/encodings/unix_to_unix.rb +2 -1
- data/lib/mail/envelope.rb +1 -1
- data/lib/mail/field.rb +93 -61
- data/lib/mail/fields/bcc_field.rb +2 -2
- data/lib/mail/fields/cc_field.rb +1 -1
- data/lib/mail/fields/comments_field.rb +1 -1
- data/lib/mail/fields/common/common_address.rb +32 -7
- data/lib/mail/fields/common/common_field.rb +1 -10
- data/lib/mail/fields/content_description_field.rb +1 -1
- data/lib/mail/fields/content_disposition_field.rb +3 -3
- data/lib/mail/fields/content_id_field.rb +2 -2
- data/lib/mail/fields/content_location_field.rb +1 -1
- data/lib/mail/fields/content_transfer_encoding_field.rb +1 -1
- data/lib/mail/fields/content_type_field.rb +1 -1
- data/lib/mail/fields/date_field.rb +2 -3
- data/lib/mail/fields/from_field.rb +1 -1
- data/lib/mail/fields/in_reply_to_field.rb +1 -1
- data/lib/mail/fields/keywords_field.rb +1 -1
- data/lib/mail/fields/message_id_field.rb +1 -1
- data/lib/mail/fields/mime_version_field.rb +1 -1
- data/lib/mail/fields/optional_field.rb +4 -1
- data/lib/mail/fields/received_field.rb +1 -1
- data/lib/mail/fields/references_field.rb +1 -1
- data/lib/mail/fields/reply_to_field.rb +1 -1
- data/lib/mail/fields/resent_bcc_field.rb +1 -1
- data/lib/mail/fields/resent_cc_field.rb +1 -1
- data/lib/mail/fields/resent_date_field.rb +0 -1
- data/lib/mail/fields/resent_from_field.rb +1 -1
- data/lib/mail/fields/resent_message_id_field.rb +1 -1
- data/lib/mail/fields/resent_sender_field.rb +1 -1
- data/lib/mail/fields/resent_to_field.rb +1 -1
- data/lib/mail/fields/return_path_field.rb +1 -1
- data/lib/mail/fields/sender_field.rb +1 -1
- data/lib/mail/fields/subject_field.rb +1 -1
- data/lib/mail/fields/to_field.rb +1 -1
- data/lib/mail/fields/unstructured_field.rb +19 -2
- data/lib/mail/header.rb +9 -8
- data/lib/mail/mail.rb +2 -10
- data/lib/mail/matchers/has_sent_mail.rb +21 -1
- data/lib/mail/message.rb +64 -51
- data/lib/mail/multibyte.rb +14 -16
- data/lib/mail/multibyte/chars.rb +2 -1
- data/lib/mail/network.rb +1 -0
- data/lib/mail/network/delivery_methods/exim.rb +6 -10
- data/lib/mail/network/delivery_methods/logger_delivery.rb +37 -0
- data/lib/mail/network/delivery_methods/sendmail.rb +8 -4
- data/lib/mail/network/delivery_methods/smtp.rb +56 -55
- data/lib/mail/network/delivery_methods/smtp_connection.rb +9 -1
- data/lib/mail/network/retriever_methods/imap.rb +18 -5
- data/lib/mail/network/retriever_methods/pop3.rb +3 -1
- data/lib/mail/parser_tools.rb +15 -0
- data/lib/mail/parsers/address_lists_parser.rb +30462 -12597
- data/lib/mail/parsers/address_lists_parser.rl +18 -12
- data/lib/mail/parsers/content_disposition_parser.rb +405 -215
- data/lib/mail/parsers/content_disposition_parser.rl +11 -5
- data/lib/mail/parsers/content_location_parser.rb +443 -208
- data/lib/mail/parsers/content_location_parser.rl +9 -3
- data/lib/mail/parsers/content_transfer_encoding_parser.rb +180 -80
- data/lib/mail/parsers/content_transfer_encoding_parser.rl +8 -2
- data/lib/mail/parsers/content_type_parser.rb +436 -245
- data/lib/mail/parsers/content_type_parser.rl +12 -6
- data/lib/mail/parsers/date_time_parser.rb +172 -72
- data/lib/mail/parsers/date_time_parser.rl +10 -4
- data/lib/mail/parsers/envelope_from_parser.rb +2833 -1320
- data/lib/mail/parsers/envelope_from_parser.rl +9 -3
- data/lib/mail/parsers/message_ids_parser.rb +2325 -976
- data/lib/mail/parsers/message_ids_parser.rl +9 -3
- data/lib/mail/parsers/mime_version_parser.rb +164 -64
- data/lib/mail/parsers/mime_version_parser.rl +9 -3
- data/lib/mail/parsers/phrase_lists_parser.rb +582 -237
- data/lib/mail/parsers/phrase_lists_parser.rl +9 -3
- data/lib/mail/parsers/received_parser.rb +7036 -3004
- data/lib/mail/parsers/received_parser.rl +11 -5
- data/lib/mail/parsers/rfc2045_content_transfer_encoding.rl +1 -0
- data/lib/mail/parsers/rfc2045_content_type.rl +1 -0
- data/lib/mail/parsers/rfc2045_mime.rl +1 -0
- data/lib/mail/parsers/rfc2183_content_disposition.rl +1 -0
- data/lib/mail/parsers/rfc3629_utf8.rl +19 -0
- data/lib/mail/parsers/rfc5234_abnf_core_rules.rl +7 -1
- data/lib/mail/parsers/rfc5322.rl +3 -1
- data/lib/mail/parsers/rfc5322_address.rl +3 -1
- data/lib/mail/parsers/rfc5322_date_time.rl +1 -0
- data/lib/mail/parsers/rfc5322_lexical_tokens.rl +9 -5
- data/lib/mail/part.rb +1 -1
- data/lib/mail/utilities.rb +44 -15
- data/lib/mail/version.rb +1 -1
- data/lib/mail/version_specific/ruby_1_8.rb +12 -1
- data/lib/mail/version_specific/ruby_1_9.rb +13 -1
- metadata +7 -13
- data/CHANGELOG.rdoc +0 -822
- data/CONTRIBUTING.md +0 -60
- data/Dependencies.txt +0 -1
- data/Gemfile +0 -11
- data/Rakefile +0 -23
- data/TODO.rdoc +0 -9
- data/lib/mail/multibyte/exceptions.rb +0 -9
@@ -1,20 +1,22 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
require 'mail/utilities'
|
3
|
+
require 'mail/parser_tools'
|
3
4
|
|
4
5
|
%%{
|
5
6
|
machine date_time;
|
7
|
+
alphtype int;
|
6
8
|
|
7
9
|
# Received Tokens
|
8
10
|
action received_tokens_s { received_tokens_s = p }
|
9
|
-
action received_tokens_e { received.info = data
|
11
|
+
action received_tokens_e { received.info = chars(data, received_tokens_s, p-1) }
|
10
12
|
|
11
13
|
# Date
|
12
14
|
action date_s { date_s = p }
|
13
|
-
action date_e { received.date = data
|
15
|
+
action date_e { received.date = chars(data, date_s, p-1).strip }
|
14
16
|
|
15
17
|
# Time
|
16
18
|
action time_s { time_s = p }
|
17
|
-
action time_e { received.time = data
|
19
|
+
action time_e { received.time = chars(data, time_s, p-1) }
|
18
20
|
|
19
21
|
# No-op actions
|
20
22
|
action address_s {}
|
@@ -49,12 +51,16 @@ require 'mail/utilities'
|
|
49
51
|
|
50
52
|
module Mail::Parsers
|
51
53
|
module ReceivedParser
|
54
|
+
extend Mail::ParserTools
|
55
|
+
|
52
56
|
ReceivedStruct = Struct.new(:date, :time, :info, :error)
|
53
57
|
|
54
58
|
%%write data noprefix;
|
55
59
|
|
56
60
|
def self.parse(data)
|
57
|
-
|
61
|
+
data = data.dup.force_encoding(Encoding::ASCII_8BIT) if data.respond_to?(:force_encoding)
|
62
|
+
|
63
|
+
raise Mail::Field::NilParseError.new(Mail::ReceivedElement) if data.nil?
|
58
64
|
|
59
65
|
# Parser state
|
60
66
|
received = ReceivedStruct.new
|
@@ -69,7 +75,7 @@ module Mail::Parsers
|
|
69
75
|
%%write exec;
|
70
76
|
|
71
77
|
if p != eof || cs < %%{ write first_final; }%%
|
72
|
-
raise Mail::Field::
|
78
|
+
raise Mail::Field::IncompleteParseError.new(Mail::ReceivedElement, data, p)
|
73
79
|
end
|
74
80
|
|
75
81
|
received
|
@@ -0,0 +1,19 @@
|
|
1
|
+
%%{
|
2
|
+
# RFC 3629 4. Syntax of UTF-8 Byte Sequences
|
3
|
+
# https://tools.ietf.org/html/rfc3629#section-4
|
4
|
+
machine rfc3629_utf8;
|
5
|
+
alphtype int;
|
6
|
+
|
7
|
+
utf8_tail = 0x80..0xBF;
|
8
|
+
|
9
|
+
utf8_2byte = 0xC2..0xDF utf8_tail;
|
10
|
+
utf8_3byte = 0xE0 0xA0..0xBF utf8_tail |
|
11
|
+
0xE1..0xEC utf8_tail utf8_tail |
|
12
|
+
0xED 0x80..0x9F utf8_tail |
|
13
|
+
0xEE..0xEF utf8_tail utf8_tail;
|
14
|
+
utf8_4byte = 0xF0 0x90..0xBF utf8_tail utf8_tail |
|
15
|
+
0xF1..0xF3 utf8_tail utf8_tail utf8_tail |
|
16
|
+
0xF4 0x80..0x8F utf8_tail utf8_tail;
|
17
|
+
|
18
|
+
utf8_non_ascii = utf8_2byte | utf8_3byte | utf8_4byte;
|
19
|
+
}%%
|
@@ -2,6 +2,9 @@
|
|
2
2
|
# RFC 5234 B.1. Core Rules
|
3
3
|
# https://tools.ietf.org/html/rfc5234#appendix-B.1
|
4
4
|
machine rfc5234_abnf_core_rules;
|
5
|
+
alphtype int;
|
6
|
+
|
7
|
+
include rfc3629_utf8 "rfc3629_utf8.rl";
|
5
8
|
|
6
9
|
LF = "\n";
|
7
10
|
CR = "\r";
|
@@ -12,5 +15,8 @@
|
|
12
15
|
DQUOTE = '"';
|
13
16
|
DIGIT = [0-9];
|
14
17
|
ALPHA = [a-zA-Z];
|
15
|
-
|
18
|
+
|
19
|
+
# RFC6532 extension for UTF-8 content
|
20
|
+
rfc5234_VCHAR = 0x21..0x7e;
|
21
|
+
VCHAR = rfc5234_VCHAR | utf8_non_ascii;
|
16
22
|
}%%
|
data/lib/mail/parsers/rfc5322.rl
CHANGED
@@ -5,6 +5,7 @@
|
|
5
5
|
# RFC 6854 Update to Internet Message Format to Allow Group Syntax in the "From:" and "Sender:" Header Fields
|
6
6
|
# https://tools.ietf.org/html/rfc6854
|
7
7
|
machine rfc5322;
|
8
|
+
alphtype int;
|
8
9
|
|
9
10
|
include rfc5234_abnf_core_rules "rfc5234_abnf_core_rules.rl";
|
10
11
|
|
@@ -18,7 +19,8 @@
|
|
18
19
|
include rfc5322_address "rfc5322_address.rl";
|
19
20
|
|
20
21
|
# 3.5. Overall Message Syntax
|
21
|
-
#
|
22
|
+
#rfc5322_text = 0x01..0x09 | "\v" | "\f" | 0x0e..0x1f;
|
23
|
+
#text = rfc5322_text | utf8_non_ascii; # RFC6532 for UTF-8
|
22
24
|
#obs_body = ((LF* CR* ((0x00 | text) LF* CR*)*) | CRLF)*
|
23
25
|
#body = ((text{,998} CRLF)* text{,998}) | obs_body;
|
24
26
|
#message = (fields | obs_fields) (CRLF body)?;
|
@@ -3,6 +3,7 @@
|
|
3
3
|
# Section 3.4. Address Specification
|
4
4
|
# https://tools.ietf.org/html/rfc5322#section-3.4
|
5
5
|
machine rfc5322_address;
|
6
|
+
alphtype int;
|
6
7
|
|
7
8
|
include rfc5234_abnf_core_rules "rfc5234_abnf_core_rules.rl";
|
8
9
|
include rfc5322_lexical_tokens "rfc5322_lexical_tokens.rl";
|
@@ -25,7 +26,8 @@
|
|
25
26
|
# domain:
|
26
27
|
domain_dot_atom_text = "."* domain_text ("."* domain_text)*;
|
27
28
|
obs_dtext = obs_NO_WS_CTL | quoted_pair;
|
28
|
-
|
29
|
+
rfc5322_dtext = 0x21..0x5a | 0x5e..0x7e | obs_dtext;
|
30
|
+
dtext = rfc5322_dtext | utf8_non_ascii; # RFC6532 for UTF-8
|
29
31
|
domain_dot_atom = CFWS? domain_dot_atom_text (CFWS? >(comment_after_address,1));
|
30
32
|
domain_literal = CFWS? "[" (FWS? dtext)* FWS? "]" CFWS?;
|
31
33
|
obs_domain = atom ("." atom)*;
|
@@ -3,6 +3,7 @@
|
|
3
3
|
# Section 3.2. Lexical Tokens
|
4
4
|
# https://tools.ietf.org/html/rfc5322#section-3.2
|
5
5
|
machine rfc5322_lexical_tokens;
|
6
|
+
alphtype int;
|
6
7
|
|
7
8
|
include rfc5234_abnf_core_rules "rfc5234_abnf_core_rules.rl";
|
8
9
|
|
@@ -16,7 +17,8 @@
|
|
16
17
|
FWS = (WSP* CRLF WSP+) | (CRLF WSP+) | obs_FWS;
|
17
18
|
|
18
19
|
obs_ctext = obs_NO_WS_CTL;
|
19
|
-
|
20
|
+
rfc5322_ctext = 0x21..0x27 | 0x2a..0x5b | 0x5d..0x7e | obs_ctext;
|
21
|
+
ctext = rfc5322_ctext | utf8_non_ascii; # RFC6532 for UTF-8
|
20
22
|
|
21
23
|
# Recursive comments
|
22
24
|
action comment_begin { fcall comment_tail; }
|
@@ -27,16 +29,18 @@
|
|
27
29
|
CFWS = ((FWS? comment)+ FWS?) | FWS;
|
28
30
|
|
29
31
|
# 3.2.3. Atom
|
30
|
-
|
31
|
-
|
32
|
-
|
32
|
+
rfc5322_atext = ALPHA | DIGIT | "!" | "#" | "$" | "%" | "&" |
|
33
|
+
"'" | "*" | "+" | "-" | "/" | "=" | "?" | "^" |
|
34
|
+
"_" | "`" | "{" | "|" | "}" | "~";
|
35
|
+
atext = rfc5322_atext | utf8_non_ascii; # RFC6532 for UTF-8
|
33
36
|
atom = CFWS? atext+ CFWS?;
|
34
37
|
dot_atom_text = atext ("." atext)*;
|
35
38
|
dot_atom = CFWS? dot_atom_text CFWS?;
|
36
39
|
|
37
40
|
# 3.2.4. Quoted Strings
|
38
41
|
obs_qtext = obs_NO_WS_CTL;
|
39
|
-
|
42
|
+
rfc5322_qtext = 0x21 | 0x23..0x5b | 0x5d..0x7e | obs_qtext;
|
43
|
+
qtext = rfc5322_qtext | utf8_non_ascii; # RFC6532 for UTF-8
|
40
44
|
|
41
45
|
qcontent = qtext | quoted_pair;
|
42
46
|
quoted_string = CFWS?
|
data/lib/mail/part.rb
CHANGED
@@ -21,7 +21,7 @@ module Mail
|
|
21
21
|
|
22
22
|
def inline_content_id
|
23
23
|
# TODO: Deprecated in 2.2.2 - Remove in 2.3
|
24
|
-
|
24
|
+
warn("Part#inline_content_id is deprecated, please call Part#cid instead")
|
25
25
|
cid
|
26
26
|
end
|
27
27
|
|
data/lib/mail/utilities.rb
CHANGED
@@ -248,33 +248,62 @@ module Mail
|
|
248
248
|
(LF.encode(:crlf_newline => true) rescue nil) == CRLF
|
249
249
|
# Using String#encode is better performing than Regexp
|
250
250
|
|
251
|
-
def self.
|
252
|
-
|
251
|
+
def self.binary_unsafe_to_lf(string) #:nodoc:
|
252
|
+
string.encode(string.encoding, :universal_newline => true)
|
253
253
|
end
|
254
254
|
|
255
|
-
def self.
|
256
|
-
|
255
|
+
def self.binary_unsafe_to_crlf(string) #:nodoc:
|
256
|
+
string.encode(string.encoding, :universal_newline => true).encode!(string.encoding, :crlf_newline => true)
|
257
257
|
end
|
258
258
|
|
259
|
+
def self.safe_for_line_ending_conversion?(string) #:nodoc:
|
260
|
+
string.ascii_only?
|
261
|
+
end
|
259
262
|
else
|
263
|
+
def self.binary_unsafe_to_lf(string) #:nodoc:
|
264
|
+
string.gsub(/\r\n|\r/, LF)
|
265
|
+
end
|
266
|
+
|
267
|
+
TO_CRLF_REGEX =
|
268
|
+
if RUBY_VERSION >= '1.9'
|
269
|
+
# This 1.9 only regex can save a reasonable amount of time (~20%)
|
270
|
+
# by not matching "\r\n" so the string is returned unchanged in
|
271
|
+
# the common case.
|
272
|
+
Regexp.new("(?<!\r)\n|\r(?!\n)")
|
273
|
+
else
|
274
|
+
/\n|\r\n|\r/
|
275
|
+
end
|
260
276
|
|
261
|
-
def self.
|
262
|
-
|
277
|
+
def self.binary_unsafe_to_crlf(string) #:nodoc:
|
278
|
+
string.gsub(TO_CRLF_REGEX, CRLF)
|
263
279
|
end
|
264
280
|
|
265
|
-
|
266
|
-
|
267
|
-
# by not matching "\r\n" so the string is returned unchanged in
|
268
|
-
# the common case.
|
269
|
-
CRLF_REGEX = Regexp.new("(?<!\r)\n|\r(?!\n)")
|
270
|
-
else
|
271
|
-
CRLF_REGEX = /\n|\r\n|\r/
|
281
|
+
def self.safe_for_line_ending_conversion?(string) #:nodoc:
|
282
|
+
string.ascii_only?
|
272
283
|
end
|
284
|
+
end
|
273
285
|
|
274
|
-
|
275
|
-
|
286
|
+
# Convert line endings to \n unless the string is binary. Used for
|
287
|
+
# sendmail delivery and for decoding 8bit Content-Transfer-Encoding.
|
288
|
+
def self.to_lf(string)
|
289
|
+
string = string.to_s
|
290
|
+
if safe_for_line_ending_conversion? string
|
291
|
+
binary_unsafe_to_lf string
|
292
|
+
else
|
293
|
+
string
|
276
294
|
end
|
295
|
+
end
|
277
296
|
|
297
|
+
# Convert line endings to \r\n unless the string is binary. Used for
|
298
|
+
# encoding 8bit and base64 Content-Transfer-Encoding and for convenience
|
299
|
+
# when parsing emails with \n line endings instead of the required \r\n.
|
300
|
+
def self.to_crlf(string)
|
301
|
+
string = string.to_s
|
302
|
+
if safe_for_line_ending_conversion? string
|
303
|
+
binary_unsafe_to_crlf string
|
304
|
+
else
|
305
|
+
string
|
306
|
+
end
|
278
307
|
end
|
279
308
|
|
280
309
|
# Returns true if the object is considered blank.
|
data/lib/mail/version.rb
CHANGED
@@ -132,6 +132,10 @@ module Mail
|
|
132
132
|
"#{encoding}'#{language}'#{URI.escape(str)}"
|
133
133
|
end
|
134
134
|
|
135
|
+
def Ruby18.string_byteslice(str, *args)
|
136
|
+
str.slice(*args)
|
137
|
+
end
|
138
|
+
|
135
139
|
private
|
136
140
|
|
137
141
|
def Ruby18.normalize_iconv_charset_encoding(encoding)
|
@@ -145,7 +149,14 @@ module Mail
|
|
145
149
|
when 'KS_C_5601-1987'
|
146
150
|
'CP949'
|
147
151
|
else
|
148
|
-
|
152
|
+
# Fall back to ASCII for charsets that Iconv doesn't recognize
|
153
|
+
begin
|
154
|
+
Iconv.new('UTF-8', encoding)
|
155
|
+
rescue Iconv::InvalidEncoding => e
|
156
|
+
'ASCII'
|
157
|
+
else
|
158
|
+
encoding
|
159
|
+
end
|
149
160
|
end
|
150
161
|
end
|
151
162
|
end
|
@@ -42,7 +42,7 @@ module Mail
|
|
42
42
|
class << self
|
43
43
|
attr_accessor :charset_encoder
|
44
44
|
end
|
45
|
-
self.charset_encoder =
|
45
|
+
self.charset_encoder = BestEffortCharsetEncoder.new
|
46
46
|
|
47
47
|
# Escapes any parenthesis in a string that are unescaped this uses
|
48
48
|
# a Ruby 1.9.1 regexp feature of negative look behind
|
@@ -88,6 +88,7 @@ module Mail
|
|
88
88
|
end
|
89
89
|
|
90
90
|
def Ruby19.transcode_charset(str, from_encoding, to_encoding = Encoding::UTF_8)
|
91
|
+
to_encoding = to_encoding.to_s if RUBY_VERSION < '1.9.3'
|
91
92
|
to_encoding = Encoding.find(to_encoding)
|
92
93
|
replacement_char = to_encoding == Encoding::UTF_8 ? '�' : '?'
|
93
94
|
charset_encoder.encode(str.dup, from_encoding).encode(to_encoding, :undef => :replace, :invalid => :replace, :replace => replacement_char)
|
@@ -242,6 +243,16 @@ module Mail
|
|
242
243
|
convert_to_encoding(encoding)
|
243
244
|
end
|
244
245
|
|
246
|
+
if "string".respond_to?(:byteslice)
|
247
|
+
def Ruby19.string_byteslice(str, *args)
|
248
|
+
str.byteslice(*args)
|
249
|
+
end
|
250
|
+
else
|
251
|
+
def Ruby19.string_byteslice(str, *args)
|
252
|
+
str.unpack('C*').slice(*args).pack('C*').force_encoding(str.encoding)
|
253
|
+
end
|
254
|
+
end
|
255
|
+
|
245
256
|
class << self
|
246
257
|
private
|
247
258
|
|
@@ -249,6 +260,7 @@ module Mail
|
|
249
260
|
if encoding.is_a?(Encoding)
|
250
261
|
encoding
|
251
262
|
else
|
263
|
+
# Fall back to ASCII for charsets that Ruby doesn't recognize
|
252
264
|
begin
|
253
265
|
Encoding.find(encoding)
|
254
266
|
rescue ArgumentError
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mail
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.7.0.
|
4
|
+
version: 2.7.0.rc2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mikel Lindsaar
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-10-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mini_mime
|
@@ -86,18 +86,9 @@ executables: []
|
|
86
86
|
extensions: []
|
87
87
|
extra_rdoc_files:
|
88
88
|
- README.md
|
89
|
-
- CONTRIBUTING.md
|
90
|
-
- CHANGELOG.rdoc
|
91
|
-
- TODO.rdoc
|
92
89
|
files:
|
93
|
-
- CHANGELOG.rdoc
|
94
|
-
- CONTRIBUTING.md
|
95
|
-
- Dependencies.txt
|
96
|
-
- Gemfile
|
97
90
|
- MIT-LICENSE
|
98
91
|
- README.md
|
99
|
-
- Rakefile
|
100
|
-
- TODO.rdoc
|
101
92
|
- lib/mail.rb
|
102
93
|
- lib/mail/attachments_list.rb
|
103
94
|
- lib/mail/body.rb
|
@@ -124,6 +115,7 @@ files:
|
|
124
115
|
- lib/mail/encodings/8bit.rb
|
125
116
|
- lib/mail/encodings/base64.rb
|
126
117
|
- lib/mail/encodings/binary.rb
|
118
|
+
- lib/mail/encodings/identity.rb
|
127
119
|
- lib/mail/encodings/quoted_printable.rb
|
128
120
|
- lib/mail/encodings/transfer_encoding.rb
|
129
121
|
- lib/mail/encodings/unix_to_unix.rb
|
@@ -177,12 +169,12 @@ files:
|
|
177
169
|
- lib/mail/message.rb
|
178
170
|
- lib/mail/multibyte.rb
|
179
171
|
- lib/mail/multibyte/chars.rb
|
180
|
-
- lib/mail/multibyte/exceptions.rb
|
181
172
|
- lib/mail/multibyte/unicode.rb
|
182
173
|
- lib/mail/multibyte/utils.rb
|
183
174
|
- lib/mail/network.rb
|
184
175
|
- lib/mail/network/delivery_methods/exim.rb
|
185
176
|
- lib/mail/network/delivery_methods/file_delivery.rb
|
177
|
+
- lib/mail/network/delivery_methods/logger_delivery.rb
|
186
178
|
- lib/mail/network/delivery_methods/sendmail.rb
|
187
179
|
- lib/mail/network/delivery_methods/smtp.rb
|
188
180
|
- lib/mail/network/delivery_methods/smtp_connection.rb
|
@@ -191,6 +183,7 @@ files:
|
|
191
183
|
- lib/mail/network/retriever_methods/imap.rb
|
192
184
|
- lib/mail/network/retriever_methods/pop3.rb
|
193
185
|
- lib/mail/network/retriever_methods/test_retriever.rb
|
186
|
+
- lib/mail/parser_tools.rb
|
194
187
|
- lib/mail/parsers.rb
|
195
188
|
- lib/mail/parsers/address_lists_parser.rb
|
196
189
|
- lib/mail/parsers/address_lists_parser.rl
|
@@ -218,6 +211,7 @@ files:
|
|
218
211
|
- lib/mail/parsers/rfc2045_content_type.rl
|
219
212
|
- lib/mail/parsers/rfc2045_mime.rl
|
220
213
|
- lib/mail/parsers/rfc2183_content_disposition.rl
|
214
|
+
- lib/mail/parsers/rfc3629_utf8.rl
|
221
215
|
- lib/mail/parsers/rfc5234_abnf_core_rules.rl
|
222
216
|
- lib/mail/parsers/rfc5322.rl
|
223
217
|
- lib/mail/parsers/rfc5322_address.rl
|
@@ -252,7 +246,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
252
246
|
version: 1.3.1
|
253
247
|
requirements: []
|
254
248
|
rubyforge_project:
|
255
|
-
rubygems_version: 2.6.
|
249
|
+
rubygems_version: 2.6.11
|
256
250
|
signing_key:
|
257
251
|
specification_version: 4
|
258
252
|
summary: Mail provides a nice Ruby DSL for making, sending and reading emails.
|