mail 2.7.0.rc1 → 2.7.0
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.
- checksums.yaml +4 -4
- data/README.md +71 -98
- 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/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/encodings.rb +89 -31
- 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 +63 -50
- data/lib/mail/multibyte/chars.rb +2 -1
- data/lib/mail/multibyte.rb +14 -16
- 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 +14 -7
- 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/network.rb +1 -0
- 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
- data/lib/mail.rb +1 -6
- metadata +9 -15
- 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 content_disposition;
|
|
7
|
+
alphtype int;
|
|
6
8
|
|
|
7
9
|
# Disposition Type
|
|
8
10
|
action disp_type_s { disp_type_s = p }
|
|
9
|
-
action disp_type_e { content_disposition.disposition_type = data
|
|
11
|
+
action disp_type_e { content_disposition.disposition_type = chars(data, disp_type_s, p-1).downcase }
|
|
10
12
|
|
|
11
13
|
# Parameter Attribute
|
|
12
14
|
action param_attr_s { param_attr_s = p }
|
|
13
|
-
action param_attr_e { param_attr = data
|
|
15
|
+
action param_attr_e { param_attr = chars(data, param_attr_s, p-1) }
|
|
14
16
|
|
|
15
17
|
# Quoted String
|
|
16
18
|
action qstr_s { qstr_s = p }
|
|
17
|
-
action qstr_e { qstr = data
|
|
19
|
+
action qstr_e { qstr = chars(data, qstr_s, p-1) }
|
|
18
20
|
|
|
19
21
|
# Parameter Value
|
|
20
22
|
action param_val_s { param_val_s = p }
|
|
@@ -24,7 +26,7 @@ require 'mail/utilities'
|
|
|
24
26
|
end
|
|
25
27
|
|
|
26
28
|
# Use quoted string value if one exists, otherwise use parameter value
|
|
27
|
-
value = qstr || data
|
|
29
|
+
value = qstr || chars(data, param_val_s, p-1)
|
|
28
30
|
|
|
29
31
|
content_disposition.parameters << { param_attr => value }
|
|
30
32
|
param_attr = nil
|
|
@@ -47,11 +49,15 @@ require 'mail/utilities'
|
|
|
47
49
|
|
|
48
50
|
module Mail::Parsers
|
|
49
51
|
module ContentDispositionParser
|
|
52
|
+
extend Mail::ParserTools
|
|
53
|
+
|
|
50
54
|
ContentDispositionStruct = Struct.new(:disposition_type, :parameters, :error)
|
|
51
55
|
|
|
52
56
|
%%write data noprefix;
|
|
53
57
|
|
|
54
58
|
def self.parse(data)
|
|
59
|
+
data = data.dup.force_encoding(Encoding::ASCII_8BIT) if data.respond_to?(:force_encoding)
|
|
60
|
+
|
|
55
61
|
content_disposition = ContentDispositionStruct.new('', [])
|
|
56
62
|
return content_disposition if Mail::Utilities.blank?(data)
|
|
57
63
|
|
|
@@ -67,7 +73,7 @@ module Mail::Parsers
|
|
|
67
73
|
%%write exec;
|
|
68
74
|
|
|
69
75
|
if p != eof || cs < %%{ write first_final; }%%
|
|
70
|
-
raise Mail::Field::
|
|
76
|
+
raise Mail::Field::IncompleteParseError.new(Mail::ContentDispositionElement, data, p)
|
|
71
77
|
end
|
|
72
78
|
|
|
73
79
|
content_disposition
|