mail 2.6.6 → 2.8.1
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 +5 -5
- data/MIT-LICENSE +1 -1
- data/README.md +134 -119
- data/lib/mail/attachments_list.rb +10 -9
- data/lib/mail/body.rb +73 -84
- data/lib/mail/check_delivery_params.rb +28 -21
- data/lib/mail/configuration.rb +2 -0
- data/lib/mail/constants.rb +27 -5
- data/lib/mail/elements/address.rb +53 -47
- data/lib/mail/elements/address_list.rb +11 -19
- data/lib/mail/elements/content_disposition_element.rb +9 -16
- data/lib/mail/elements/content_location_element.rb +6 -11
- data/lib/mail/elements/content_transfer_encoding_element.rb +6 -11
- data/lib/mail/elements/content_type_element.rb +16 -23
- data/lib/mail/elements/date_time_element.rb +7 -15
- data/lib/mail/elements/envelope_from_element.rb +22 -23
- data/lib/mail/elements/message_ids_element.rb +18 -13
- data/lib/mail/elements/mime_version_element.rb +7 -15
- data/lib/mail/elements/phrase_list.rb +12 -10
- data/lib/mail/elements/received_element.rb +27 -19
- data/lib/mail/encodings/7bit.rb +9 -14
- 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 +3 -1
- data/lib/mail/encodings.rb +81 -54
- data/lib/mail/envelope.rb +11 -14
- data/lib/mail/field.rb +119 -98
- data/lib/mail/field_list.rb +60 -7
- data/lib/mail/fields/bcc_field.rb +34 -52
- data/lib/mail/fields/cc_field.rb +28 -49
- data/lib/mail/fields/comments_field.rb +27 -37
- data/lib/mail/fields/common_address_field.rb +170 -0
- data/lib/mail/fields/common_date_field.rb +58 -0
- data/lib/mail/fields/common_field.rb +77 -0
- data/lib/mail/fields/common_message_id_field.rb +42 -0
- data/lib/mail/fields/content_description_field.rb +7 -14
- data/lib/mail/fields/content_disposition_field.rb +13 -38
- data/lib/mail/fields/content_id_field.rb +24 -51
- data/lib/mail/fields/content_location_field.rb +11 -25
- data/lib/mail/fields/content_transfer_encoding_field.rb +31 -31
- data/lib/mail/fields/content_type_field.rb +50 -80
- data/lib/mail/fields/date_field.rb +23 -52
- data/lib/mail/fields/from_field.rb +28 -49
- data/lib/mail/fields/in_reply_to_field.rb +38 -49
- data/lib/mail/fields/keywords_field.rb +18 -31
- data/lib/mail/fields/message_id_field.rb +25 -71
- data/lib/mail/fields/mime_version_field.rb +19 -30
- data/lib/mail/fields/named_structured_field.rb +11 -0
- data/lib/mail/fields/named_unstructured_field.rb +11 -0
- data/lib/mail/fields/optional_field.rb +9 -7
- data/lib/mail/fields/{common/parameter_hash.rb → parameter_hash.rb} +13 -11
- data/lib/mail/fields/received_field.rb +43 -57
- data/lib/mail/fields/references_field.rb +35 -49
- data/lib/mail/fields/reply_to_field.rb +28 -49
- data/lib/mail/fields/resent_bcc_field.rb +28 -49
- data/lib/mail/fields/resent_cc_field.rb +28 -49
- data/lib/mail/fields/resent_date_field.rb +5 -30
- data/lib/mail/fields/resent_from_field.rb +28 -49
- data/lib/mail/fields/resent_message_id_field.rb +5 -29
- data/lib/mail/fields/resent_sender_field.rb +27 -56
- data/lib/mail/fields/resent_to_field.rb +28 -49
- data/lib/mail/fields/return_path_field.rb +50 -54
- data/lib/mail/fields/sender_field.rb +34 -55
- data/lib/mail/fields/structured_field.rb +3 -30
- data/lib/mail/fields/subject_field.rb +9 -11
- data/lib/mail/fields/to_field.rb +28 -49
- data/lib/mail/fields/unstructured_field.rb +32 -47
- data/lib/mail/header.rb +71 -110
- data/lib/mail/mail.rb +2 -10
- data/lib/mail/matchers/attachment_matchers.rb +15 -0
- data/lib/mail/matchers/has_sent_mail.rb +21 -1
- data/lib/mail/message.rb +113 -117
- data/lib/mail/multibyte/chars.rb +21 -178
- data/lib/mail/multibyte/unicode.rb +10 -10
- data/lib/mail/multibyte/utils.rb +26 -43
- data/lib/mail/multibyte.rb +55 -16
- data/lib/mail/network/delivery_methods/exim.rb +5 -4
- data/lib/mail/network/delivery_methods/file_delivery.rb +11 -10
- data/lib/mail/network/delivery_methods/logger_delivery.rb +34 -0
- data/lib/mail/network/delivery_methods/sendmail.rb +62 -21
- data/lib/mail/network/delivery_methods/smtp.rb +75 -50
- data/lib/mail/network/delivery_methods/smtp_connection.rb +3 -4
- data/lib/mail/network/delivery_methods/test_mailer.rb +4 -2
- data/lib/mail/network/retriever_methods/base.rb +8 -8
- data/lib/mail/network/retriever_methods/imap.rb +20 -7
- data/lib/mail/network/retriever_methods/pop3.rb +5 -3
- data/lib/mail/network/retriever_methods/test_retriever.rb +2 -1
- data/lib/mail/network.rb +1 -0
- data/lib/mail/parser_tools.rb +15 -0
- data/lib/mail/parsers/address_lists_parser.rb +33225 -116
- data/lib/mail/parsers/address_lists_parser.rl +179 -0
- data/lib/mail/parsers/content_disposition_parser.rb +882 -49
- data/lib/mail/parsers/content_disposition_parser.rl +89 -0
- data/lib/mail/parsers/content_location_parser.rb +809 -23
- data/lib/mail/parsers/content_location_parser.rl +78 -0
- data/lib/mail/parsers/content_transfer_encoding_parser.rb +509 -21
- data/lib/mail/parsers/content_transfer_encoding_parser.rl +71 -0
- data/lib/mail/parsers/content_type_parser.rb +1037 -56
- data/lib/mail/parsers/content_type_parser.rl +90 -0
- data/lib/mail/parsers/date_time_parser.rb +877 -25
- data/lib/mail/parsers/date_time_parser.rl +69 -0
- data/lib/mail/parsers/envelope_from_parser.rb +3669 -40
- data/lib/mail/parsers/envelope_from_parser.rl +89 -0
- data/lib/mail/parsers/message_ids_parser.rb +5146 -25
- data/lib/mail/parsers/message_ids_parser.rl +93 -0
- data/lib/mail/parsers/mime_version_parser.rb +497 -26
- data/lib/mail/parsers/mime_version_parser.rl +68 -0
- data/lib/mail/parsers/phrase_lists_parser.rb +870 -22
- data/lib/mail/parsers/phrase_lists_parser.rl +90 -0
- data/lib/mail/parsers/received_parser.rb +8776 -43
- data/lib/mail/parsers/received_parser.rl +91 -0
- data/lib/mail/parsers/rfc2045_content_transfer_encoding.rl +13 -0
- data/lib/mail/parsers/rfc2045_content_type.rl +25 -0
- data/lib/mail/parsers/rfc2045_mime.rl +16 -0
- data/lib/mail/parsers/rfc2183_content_disposition.rl +15 -0
- data/lib/mail/parsers/rfc3629_utf8.rl +19 -0
- data/lib/mail/parsers/rfc5234_abnf_core_rules.rl +22 -0
- data/lib/mail/parsers/rfc5322.rl +74 -0
- data/lib/mail/parsers/rfc5322_address.rl +72 -0
- data/lib/mail/parsers/{ragel/date_time.rl → rfc5322_date_time.rl} +8 -1
- data/lib/mail/parsers/rfc5322_lexical_tokens.rl +60 -0
- data/lib/mail/parsers.rb +11 -25
- data/lib/mail/part.rb +6 -10
- data/lib/mail/parts_list.rb +62 -6
- data/lib/mail/smtp_envelope.rb +57 -0
- data/lib/mail/utilities.rb +343 -74
- data/lib/mail/version.rb +2 -2
- data/lib/mail/yaml.rb +30 -0
- data/lib/mail.rb +5 -35
- metadata +111 -66
- data/CHANGELOG.rdoc +0 -803
- data/CONTRIBUTING.md +0 -60
- data/Dependencies.txt +0 -2
- data/Gemfile +0 -14
- data/Rakefile +0 -29
- data/TODO.rdoc +0 -9
- data/lib/mail/core_extensions/smtp.rb +0 -25
- data/lib/mail/core_extensions/string/access.rb +0 -146
- data/lib/mail/core_extensions/string/multibyte.rb +0 -79
- data/lib/mail/core_extensions/string.rb +0 -21
- data/lib/mail/fields/common/address_container.rb +0 -17
- data/lib/mail/fields/common/common_address.rb +0 -136
- data/lib/mail/fields/common/common_date.rb +0 -36
- data/lib/mail/fields/common/common_field.rb +0 -61
- data/lib/mail/fields/common/common_message_id.rb +0 -49
- data/lib/mail/multibyte/exceptions.rb +0 -9
- data/lib/mail/parsers/ragel/common.rl +0 -185
- data/lib/mail/parsers/ragel/parser_info.rb +0 -61
- data/lib/mail/parsers/ragel/ruby/machines/address_lists_machine.rb +0 -14864
- data/lib/mail/parsers/ragel/ruby/machines/address_lists_machine.rb.rl +0 -37
- data/lib/mail/parsers/ragel/ruby/machines/content_disposition_machine.rb +0 -751
- data/lib/mail/parsers/ragel/ruby/machines/content_disposition_machine.rb.rl +0 -37
- data/lib/mail/parsers/ragel/ruby/machines/content_location_machine.rb +0 -614
- data/lib/mail/parsers/ragel/ruby/machines/content_location_machine.rb.rl +0 -37
- data/lib/mail/parsers/ragel/ruby/machines/content_transfer_encoding_machine.rb +0 -447
- data/lib/mail/parsers/ragel/ruby/machines/content_transfer_encoding_machine.rb.rl +0 -37
- data/lib/mail/parsers/ragel/ruby/machines/content_type_machine.rb +0 -825
- data/lib/mail/parsers/ragel/ruby/machines/content_type_machine.rb.rl +0 -37
- data/lib/mail/parsers/ragel/ruby/machines/date_time_machine.rb +0 -817
- data/lib/mail/parsers/ragel/ruby/machines/date_time_machine.rb.rl +0 -37
- data/lib/mail/parsers/ragel/ruby/machines/envelope_from_machine.rb +0 -2149
- data/lib/mail/parsers/ragel/ruby/machines/envelope_from_machine.rb.rl +0 -37
- data/lib/mail/parsers/ragel/ruby/machines/message_ids_machine.rb +0 -1570
- data/lib/mail/parsers/ragel/ruby/machines/message_ids_machine.rb.rl +0 -37
- data/lib/mail/parsers/ragel/ruby/machines/mime_version_machine.rb +0 -440
- data/lib/mail/parsers/ragel/ruby/machines/mime_version_machine.rb.rl +0 -37
- data/lib/mail/parsers/ragel/ruby/machines/phrase_lists_machine.rb +0 -564
- data/lib/mail/parsers/ragel/ruby/machines/phrase_lists_machine.rb.rl +0 -37
- data/lib/mail/parsers/ragel/ruby/machines/rb_actions.rl +0 -51
- data/lib/mail/parsers/ragel/ruby/machines/received_machine.rb +0 -5144
- data/lib/mail/parsers/ragel/ruby/machines/received_machine.rb.rl +0 -37
- data/lib/mail/parsers/ragel/ruby/parser.rb.rl.erb +0 -37
- data/lib/mail/parsers/ragel/ruby.rb +0 -40
- data/lib/mail/parsers/ragel.rb +0 -18
- data/lib/mail/version_specific/ruby_1_8.rb +0 -126
- data/lib/mail/version_specific/ruby_1_9.rb +0 -226
@@ -1,35 +1,25 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
# frozen_string_literal: true
|
3
|
-
|
4
|
-
|
5
|
-
|
3
|
+
require 'mail/fields/named_structured_field'
|
4
|
+
require 'mail/utilities'
|
5
|
+
|
6
6
|
module Mail
|
7
|
-
class MimeVersionField <
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
self
|
20
|
-
|
21
|
-
end
|
22
|
-
|
23
|
-
def parse(val = value)
|
24
|
-
unless Utilities.blank?(val)
|
25
|
-
@element = Mail::MimeVersionElement.new(val)
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
7
|
+
class MimeVersionField < NamedStructuredField #:nodoc:
|
8
|
+
NAME = 'Mime-Version'
|
9
|
+
|
10
|
+
def self.singular?
|
11
|
+
true
|
12
|
+
end
|
13
|
+
|
14
|
+
def initialize(value = nil, charset = nil)
|
15
|
+
value = '1.0' if Utilities.blank?(value)
|
16
|
+
super value, charset
|
17
|
+
end
|
18
|
+
|
29
19
|
def element
|
30
20
|
@element ||= Mail::MimeVersionElement.new(value)
|
31
21
|
end
|
32
|
-
|
22
|
+
|
33
23
|
def version
|
34
24
|
"#{element.major}.#{element.minor}"
|
35
25
|
end
|
@@ -41,14 +31,13 @@ module Mail
|
|
41
31
|
def minor
|
42
32
|
element.minor.to_i
|
43
33
|
end
|
44
|
-
|
34
|
+
|
45
35
|
def encoded
|
46
|
-
"#{
|
36
|
+
"#{name}: #{version}\r\n"
|
47
37
|
end
|
48
|
-
|
38
|
+
|
49
39
|
def decoded
|
50
40
|
version
|
51
41
|
end
|
52
|
-
|
53
42
|
end
|
54
43
|
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# frozen_string_literal: true
|
3
|
+
require 'mail/fields/structured_field'
|
4
|
+
|
5
|
+
module Mail
|
6
|
+
class NamedStructuredField < StructuredField #:nodoc:
|
7
|
+
def initialize(value = nil, charset = nil)
|
8
|
+
super self.class::NAME, value, charset
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# frozen_string_literal: true
|
3
|
+
require 'mail/fields/unstructured_field'
|
4
|
+
|
5
|
+
module Mail
|
6
|
+
class NamedUnstructuredField < UnstructuredField #:nodoc:
|
7
|
+
def initialize(value = nil, charset = nil)
|
8
|
+
super self.class::NAME, value, charset
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -1,14 +1,16 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
# frozen_string_literal: true
|
3
|
-
#
|
4
|
-
# The field names of any optional-field MUST NOT be identical to any
|
5
|
-
# field name specified elsewhere in this standard.
|
6
|
-
#
|
7
|
-
# optional-field = field-name ":" unstructured CRLF
|
8
3
|
require 'mail/fields/unstructured_field'
|
9
4
|
|
10
5
|
module Mail
|
11
|
-
|
12
|
-
|
6
|
+
# The field names of any optional-field MUST NOT be identical to any
|
7
|
+
# field name specified elsewhere in this standard.
|
8
|
+
#
|
9
|
+
# optional-field = field-name ":" unstructured CRLF
|
10
|
+
class OptionalField < UnstructuredField #:nodoc:
|
11
|
+
private
|
12
|
+
def do_encode
|
13
|
+
"#{wrapped_value}\r\n"
|
14
|
+
end
|
13
15
|
end
|
14
16
|
end
|
@@ -1,36 +1,38 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
# frozen_string_literal: true
|
3
|
-
|
3
|
+
require 'mail/constants'
|
4
|
+
require 'mail/indifferent_hash'
|
5
|
+
require 'mail/encodings'
|
4
6
|
|
7
|
+
module Mail
|
5
8
|
# ParameterHash is an intelligent Hash that allows you to add
|
6
9
|
# parameter values including the MIME extension paramaters that
|
7
10
|
# have the name*0="blah", name*1="bleh" keys, and will just return
|
8
11
|
# a single key called name="blahbleh" and do any required un-encoding
|
9
12
|
# to make that happen
|
10
|
-
#
|
11
|
-
|
12
|
-
class ParameterHash < IndifferentHash
|
13
|
-
|
14
|
-
include Mail::Utilities
|
15
|
-
|
13
|
+
#
|
14
|
+
# Parameters are defined in RFC2045. Split keys are in RFC2231.
|
15
|
+
class ParameterHash < IndifferentHash #:nodoc:
|
16
16
|
def [](key_name)
|
17
17
|
key_pattern = Regexp.escape(key_name.to_s)
|
18
18
|
pairs = []
|
19
19
|
exact = nil
|
20
|
+
|
20
21
|
each do |k,v|
|
21
22
|
if k =~ /^#{key_pattern}(\*|$)/i
|
22
|
-
if $1 == ASTERISK
|
23
|
+
if $1 == Constants::ASTERISK
|
23
24
|
pairs << [k, v]
|
24
25
|
else
|
25
26
|
exact = k
|
26
27
|
end
|
27
28
|
end
|
28
29
|
end
|
30
|
+
|
29
31
|
if pairs.empty? # Just dealing with a single value pair
|
30
32
|
super(exact || key_name)
|
31
33
|
else # Dealing with a multiple value pair or a single encoded value pair
|
32
34
|
string = pairs.sort { |a,b| a.first.to_s <=> b.first.to_s }.map { |v| v.last }.join('')
|
33
|
-
if mt = string.match(/([\w\-]+)'(\w\w)'(.*)/)
|
35
|
+
if mt = string.match(/([\w\-]+)?'(\w\w)?'(.*)/)
|
34
36
|
string = mt[3]
|
35
37
|
encoding = mt[1]
|
36
38
|
else
|
@@ -46,13 +48,13 @@ module Mail
|
|
46
48
|
value = Mail::Encodings.param_encode(value)
|
47
49
|
key_name = "#{key_name}*"
|
48
50
|
end
|
49
|
-
%Q{#{key_name}=#{quote_token(value)}}
|
51
|
+
%Q{#{key_name}=#{Utilities.quote_token(value)}}
|
50
52
|
end.join(";\r\n\s")
|
51
53
|
end
|
52
54
|
|
53
55
|
def decoded
|
54
56
|
map.sort_by { |a| a.first.to_s }.map! do |key_name, value|
|
55
|
-
%Q{#{key_name}=#{quote_token(value)}}
|
57
|
+
%Q{#{key_name}=#{Utilities.quote_token(value)}}
|
56
58
|
end.join("; ")
|
57
59
|
end
|
58
60
|
end
|
@@ -1,76 +1,62 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
# frozen_string_literal: true
|
3
|
-
|
4
|
-
|
5
|
-
# 1*received
|
6
|
-
#
|
7
|
-
# return = "Return-Path:" path CRLF
|
8
|
-
#
|
9
|
-
# path = ([CFWS] "<" ([CFWS] / addr-spec) ">" [CFWS]) /
|
10
|
-
# obs-path
|
11
|
-
#
|
12
|
-
# received = "Received:" name-val-list ";" date-time CRLF
|
13
|
-
#
|
14
|
-
# name-val-list = [CFWS] [name-val-pair *(CFWS name-val-pair)]
|
15
|
-
#
|
16
|
-
# name-val-pair = item-name CFWS item-value
|
17
|
-
#
|
18
|
-
# item-name = ALPHA *(["-"] (ALPHA / DIGIT))
|
19
|
-
#
|
20
|
-
# item-value = 1*angle-addr / addr-spec /
|
21
|
-
# atom / domain / msg-id
|
22
|
-
#
|
3
|
+
require 'mail/fields/named_structured_field'
|
4
|
+
|
23
5
|
module Mail
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
6
|
+
# trace = [return]
|
7
|
+
# 1*received
|
8
|
+
#
|
9
|
+
# return = "Return-Path:" path CRLF
|
10
|
+
#
|
11
|
+
# path = ([CFWS] "<" ([CFWS] / addr-spec) ">" [CFWS]) /
|
12
|
+
# obs-path
|
13
|
+
#
|
14
|
+
# received = "Received:" name-val-list ";" date-time CRLF
|
15
|
+
#
|
16
|
+
# name-val-list = [CFWS] [name-val-pair *(CFWS name-val-pair)]
|
17
|
+
#
|
18
|
+
# name-val-pair = item-name CFWS item-value
|
19
|
+
#
|
20
|
+
# item-name = ALPHA *(["-"] (ALPHA / DIGIT))
|
21
|
+
#
|
22
|
+
# item-value = 1*angle-addr / addr-spec /
|
23
|
+
# atom / domain / msg-id
|
24
|
+
class ReceivedField < NamedStructuredField #:nodoc:
|
25
|
+
NAME = 'Received'
|
34
26
|
|
35
|
-
end
|
36
|
-
|
37
|
-
def parse(val = value)
|
38
|
-
unless Utilities.blank?(val)
|
39
|
-
@element = Mail::ReceivedElement.new(val)
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
27
|
def element
|
44
28
|
@element ||= Mail::ReceivedElement.new(value)
|
45
29
|
end
|
46
|
-
|
30
|
+
|
47
31
|
def date_time
|
48
|
-
@datetime ||=
|
32
|
+
@datetime ||= element.date_time
|
49
33
|
end
|
50
34
|
|
51
35
|
def info
|
52
36
|
element.info
|
53
37
|
end
|
54
|
-
|
38
|
+
|
55
39
|
def formatted_date
|
56
|
-
date_time.strftime
|
57
|
-
|
58
|
-
|
59
|
-
def encoded
|
60
|
-
if Utilities.blank?(value)
|
61
|
-
"#{CAPITALIZED_FIELD}: \r\n"
|
62
|
-
else
|
63
|
-
"#{CAPITALIZED_FIELD}: #{info}; #{formatted_date}\r\n"
|
40
|
+
if date_time.respond_to? :strftime and date_time.respond_to? :zone
|
41
|
+
date_time.strftime("%a, %d %b %Y %H:%M:%S ") + date_time.zone.delete(':')
|
64
42
|
end
|
65
43
|
end
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
44
|
+
|
45
|
+
private
|
46
|
+
def do_encode
|
47
|
+
if Utilities.blank?(value)
|
48
|
+
"#{name}: \r\n"
|
49
|
+
else
|
50
|
+
"#{name}: #{info}; #{formatted_date}\r\n"
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def do_decode
|
55
|
+
if Utilities.blank?(value)
|
56
|
+
""
|
57
|
+
else
|
58
|
+
"#{info}; #{formatted_date}"
|
59
|
+
end
|
72
60
|
end
|
73
|
-
end
|
74
|
-
|
75
61
|
end
|
76
62
|
end
|
@@ -1,57 +1,43 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
# frozen_string_literal: true
|
3
|
-
|
4
|
-
# = References Field
|
5
|
-
#
|
6
|
-
# The References field inherits references StructuredField and handles the References: header
|
7
|
-
# field in the email.
|
8
|
-
#
|
9
|
-
# Sending references to a mail message will instantiate a Mail::Field object that
|
10
|
-
# has a ReferencesField as its field type. This includes all Mail::CommonAddress
|
11
|
-
# module instance metods.
|
12
|
-
#
|
13
|
-
# Note that, the #message_ids method will return an array of message IDs without the
|
14
|
-
# enclosing angle brackets which per RFC are not syntactically part of the message id.
|
15
|
-
#
|
16
|
-
# Only one References field can appear in a header, though it can have multiple
|
17
|
-
# Message IDs.
|
18
|
-
#
|
19
|
-
# == Examples:
|
20
|
-
#
|
21
|
-
# mail = Mail.new
|
22
|
-
# mail.references = '<F6E2D0B4-CC35-4A91-BA4C-C7C712B10C13@test.me.dom>'
|
23
|
-
# mail.references #=> '<F6E2D0B4-CC35-4A91-BA4C-C7C712B10C13@test.me.dom>'
|
24
|
-
# mail[:references] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ReferencesField:0x180e1c4
|
25
|
-
# mail['references'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ReferencesField:0x180e1c4
|
26
|
-
# mail['References'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ReferencesField:0x180e1c4
|
27
|
-
#
|
28
|
-
# mail[:references].message_ids #=> ['F6E2D0B4-CC35-4A91-BA4C-C7C712B10C13@test.me.dom']
|
29
|
-
#
|
30
|
-
require 'mail/fields/common/common_message_id'
|
3
|
+
require 'mail/fields/common_message_id_field'
|
31
4
|
|
32
5
|
module Mail
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
6
|
+
# = References Field
|
7
|
+
#
|
8
|
+
# The References field inherits references StructuredField and handles the References: header
|
9
|
+
# field in the email.
|
10
|
+
#
|
11
|
+
# Sending references to a mail message will instantiate a Mail::Field object that
|
12
|
+
# has a ReferencesField as its field type. This includes all Mail::CommonAddress
|
13
|
+
# module instance metods.
|
14
|
+
#
|
15
|
+
# Note that, the #message_ids method will return an array of message IDs without the
|
16
|
+
# enclosing angle brackets which per RFC are not syntactically part of the message id.
|
17
|
+
#
|
18
|
+
# Only one References field can appear in a header, though it can have multiple
|
19
|
+
# Message IDs.
|
20
|
+
#
|
21
|
+
# == Examples:
|
22
|
+
#
|
23
|
+
# mail = Mail.new
|
24
|
+
# mail.references = '<F6E2D0B4-CC35-4A91-BA4C-C7C712B10C13@test.me.dom>'
|
25
|
+
# mail.references #=> '<F6E2D0B4-CC35-4A91-BA4C-C7C712B10C13@test.me.dom>'
|
26
|
+
# mail[:references] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ReferencesField:0x180e1c4
|
27
|
+
# mail['references'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ReferencesField:0x180e1c4
|
28
|
+
# mail['References'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ReferencesField:0x180e1c4
|
29
|
+
#
|
30
|
+
# mail[:references].message_ids #=> ['F6E2D0B4-CC35-4A91-BA4C-C7C712B10C13@test.me.dom']
|
31
|
+
class ReferencesField < CommonMessageIdField #:nodoc:
|
32
|
+
NAME = 'References'
|
33
|
+
|
34
|
+
def self.singular?
|
35
|
+
true
|
50
36
|
end
|
51
|
-
|
52
|
-
def
|
53
|
-
|
37
|
+
|
38
|
+
def initialize(value = nil, charset = nil)
|
39
|
+
value = value.join("\r\n\s") if value.is_a?(Array)
|
40
|
+
super value, charset
|
54
41
|
end
|
55
|
-
|
56
42
|
end
|
57
43
|
end
|
@@ -1,55 +1,34 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
# frozen_string_literal: true
|
3
|
-
|
4
|
-
# = Reply-To Field
|
5
|
-
#
|
6
|
-
# The Reply-To field inherits reply-to StructuredField and handles the Reply-To: header
|
7
|
-
# field in the email.
|
8
|
-
#
|
9
|
-
# Sending reply_to to a mail message will instantiate a Mail::Field object that
|
10
|
-
# has a ReplyToField as its field type. This includes all Mail::CommonAddress
|
11
|
-
# module instance metods.
|
12
|
-
#
|
13
|
-
# Only one Reply-To field can appear in a header, though it can have multiple
|
14
|
-
# addresses and groups of addresses.
|
15
|
-
#
|
16
|
-
# == Examples:
|
17
|
-
#
|
18
|
-
# mail = Mail.new
|
19
|
-
# mail.reply_to = 'Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net'
|
20
|
-
# mail.reply_to #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net']
|
21
|
-
# mail[:reply_to] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ReplyToField:0x180e1c4
|
22
|
-
# mail['reply-to'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ReplyToField:0x180e1c4
|
23
|
-
# mail['Reply-To'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ReplyToField:0x180e1c4
|
24
|
-
#
|
25
|
-
# mail[:reply_to].encoded #=> 'Reply-To: Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net\r\n'
|
26
|
-
# mail[:reply_to].decoded #=> 'Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net'
|
27
|
-
# mail[:reply_to].addresses #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net']
|
28
|
-
# mail[:reply_to].formatted #=> ['Mikel Lindsaar <mikel@test.lindsaar.net>', 'ada@test.lindsaar.net']
|
29
|
-
#
|
30
|
-
require 'mail/fields/common/common_address'
|
3
|
+
require 'mail/fields/common_address_field'
|
31
4
|
|
32
5
|
module Mail
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
6
|
+
# = Reply-To Field
|
7
|
+
#
|
8
|
+
# The Reply-To field inherits reply-to StructuredField and handles the Reply-To: header
|
9
|
+
# field in the email.
|
10
|
+
#
|
11
|
+
# Sending reply_to to a mail message will instantiate a Mail::Field object that
|
12
|
+
# has a ReplyToField as its field type. This includes all Mail::CommonAddress
|
13
|
+
# module instance metods.
|
14
|
+
#
|
15
|
+
# Only one Reply-To field can appear in a header, though it can have multiple
|
16
|
+
# addresses and groups of addresses.
|
17
|
+
#
|
18
|
+
# == Examples:
|
19
|
+
#
|
20
|
+
# mail = Mail.new
|
21
|
+
# mail.reply_to = 'Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net'
|
22
|
+
# mail.reply_to #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net']
|
23
|
+
# mail[:reply_to] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ReplyToField:0x180e1c4
|
24
|
+
# mail['reply-to'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ReplyToField:0x180e1c4
|
25
|
+
# mail['Reply-To'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ReplyToField:0x180e1c4
|
26
|
+
#
|
27
|
+
# mail[:reply_to].encoded #=> 'Reply-To: Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net\r\n'
|
28
|
+
# mail[:reply_to].decoded #=> 'Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net'
|
29
|
+
# mail[:reply_to].addresses #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net']
|
30
|
+
# mail[:reply_to].formatted #=> ['Mikel Lindsaar <mikel@test.lindsaar.net>', 'ada@test.lindsaar.net']
|
31
|
+
class ReplyToField < CommonAddressField #:nodoc:
|
32
|
+
NAME = 'Reply-To'
|
54
33
|
end
|
55
34
|
end
|
@@ -1,55 +1,34 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
# frozen_string_literal: true
|
3
|
-
|
4
|
-
# = Resent-Bcc Field
|
5
|
-
#
|
6
|
-
# The Resent-Bcc field inherits resent-bcc StructuredField and handles the
|
7
|
-
# Resent-Bcc: header field in the email.
|
8
|
-
#
|
9
|
-
# Sending resent_bcc to a mail message will instantiate a Mail::Field object that
|
10
|
-
# has a ResentBccField as its field type. This includes all Mail::CommonAddress
|
11
|
-
# module instance metods.
|
12
|
-
#
|
13
|
-
# Only one Resent-Bcc field can appear in a header, though it can have multiple
|
14
|
-
# addresses and groups of addresses.
|
15
|
-
#
|
16
|
-
# == Examples:
|
17
|
-
#
|
18
|
-
# mail = Mail.new
|
19
|
-
# mail.resent_bcc = 'Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net'
|
20
|
-
# mail.resent_bcc #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net']
|
21
|
-
# mail[:resent_bcc] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ResentBccField:0x180e1c4
|
22
|
-
# mail['resent-bcc'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ResentBccField:0x180e1c4
|
23
|
-
# mail['Resent-Bcc'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ResentBccField:0x180e1c4
|
24
|
-
#
|
25
|
-
# mail[:resent_bcc].encoded #=> 'Resent-Bcc: Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net\r\n'
|
26
|
-
# mail[:resent_bcc].decoded #=> 'Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net'
|
27
|
-
# mail[:resent_bcc].addresses #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net']
|
28
|
-
# mail[:resent_bcc].formatted #=> ['Mikel Lindsaar <mikel@test.lindsaar.net>', 'ada@test.lindsaar.net']
|
29
|
-
#
|
30
|
-
require 'mail/fields/common/common_address'
|
3
|
+
require 'mail/fields/common_address_field'
|
31
4
|
|
32
5
|
module Mail
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
6
|
+
# = Resent-Bcc Field
|
7
|
+
#
|
8
|
+
# The Resent-Bcc field inherits resent-bcc StructuredField and handles the
|
9
|
+
# Resent-Bcc: header field in the email.
|
10
|
+
#
|
11
|
+
# Sending resent_bcc to a mail message will instantiate a Mail::Field object that
|
12
|
+
# has a ResentBccField as its field type. This includes all Mail::CommonAddress
|
13
|
+
# module instance metods.
|
14
|
+
#
|
15
|
+
# Only one Resent-Bcc field can appear in a header, though it can have multiple
|
16
|
+
# addresses and groups of addresses.
|
17
|
+
#
|
18
|
+
# == Examples:
|
19
|
+
#
|
20
|
+
# mail = Mail.new
|
21
|
+
# mail.resent_bcc = 'Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net'
|
22
|
+
# mail.resent_bcc #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net']
|
23
|
+
# mail[:resent_bcc] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ResentBccField:0x180e1c4
|
24
|
+
# mail['resent-bcc'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ResentBccField:0x180e1c4
|
25
|
+
# mail['Resent-Bcc'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ResentBccField:0x180e1c4
|
26
|
+
#
|
27
|
+
# mail[:resent_bcc].encoded #=> 'Resent-Bcc: Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net\r\n'
|
28
|
+
# mail[:resent_bcc].decoded #=> 'Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net'
|
29
|
+
# mail[:resent_bcc].addresses #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net']
|
30
|
+
# mail[:resent_bcc].formatted #=> ['Mikel Lindsaar <mikel@test.lindsaar.net>', 'ada@test.lindsaar.net']
|
31
|
+
class ResentBccField < CommonAddressField #:nodoc:
|
32
|
+
NAME = 'Resent-Bcc'
|
54
33
|
end
|
55
34
|
end
|
@@ -1,55 +1,34 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
# frozen_string_literal: true
|
3
|
-
|
4
|
-
# = Resent-Cc Field
|
5
|
-
#
|
6
|
-
# The Resent-Cc field inherits resent-cc StructuredField and handles the Resent-Cc: header
|
7
|
-
# field in the email.
|
8
|
-
#
|
9
|
-
# Sending resent_cc to a mail message will instantiate a Mail::Field object that
|
10
|
-
# has a ResentCcField as its field type. This includes all Mail::CommonAddress
|
11
|
-
# module instance metods.
|
12
|
-
#
|
13
|
-
# Only one Resent-Cc field can appear in a header, though it can have multiple
|
14
|
-
# addresses and groups of addresses.
|
15
|
-
#
|
16
|
-
# == Examples:
|
17
|
-
#
|
18
|
-
# mail = Mail.new
|
19
|
-
# mail.resent_cc = 'Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net'
|
20
|
-
# mail.resent_cc #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net']
|
21
|
-
# mail[:resent_cc] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ResentCcField:0x180e1c4
|
22
|
-
# mail['resent-cc'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ResentCcField:0x180e1c4
|
23
|
-
# mail['Resent-Cc'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ResentCcField:0x180e1c4
|
24
|
-
#
|
25
|
-
# mail[:resent_cc].encoded #=> 'Resent-Cc: Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net\r\n'
|
26
|
-
# mail[:resent_cc].decoded #=> 'Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net'
|
27
|
-
# mail[:resent_cc].addresses #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net']
|
28
|
-
# mail[:resent_cc].formatted #=> ['Mikel Lindsaar <mikel@test.lindsaar.net>', 'ada@test.lindsaar.net']
|
29
|
-
#
|
30
|
-
require 'mail/fields/common/common_address'
|
3
|
+
require 'mail/fields/common_address_field'
|
31
4
|
|
32
5
|
module Mail
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
6
|
+
# = Resent-Cc Field
|
7
|
+
#
|
8
|
+
# The Resent-Cc field inherits resent-cc StructuredField and handles the Resent-Cc: header
|
9
|
+
# field in the email.
|
10
|
+
#
|
11
|
+
# Sending resent_cc to a mail message will instantiate a Mail::Field object that
|
12
|
+
# has a ResentCcField as its field type. This includes all Mail::CommonAddress
|
13
|
+
# module instance metods.
|
14
|
+
#
|
15
|
+
# Only one Resent-Cc field can appear in a header, though it can have multiple
|
16
|
+
# addresses and groups of addresses.
|
17
|
+
#
|
18
|
+
# == Examples:
|
19
|
+
#
|
20
|
+
# mail = Mail.new
|
21
|
+
# mail.resent_cc = 'Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net'
|
22
|
+
# mail.resent_cc #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net']
|
23
|
+
# mail[:resent_cc] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ResentCcField:0x180e1c4
|
24
|
+
# mail['resent-cc'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ResentCcField:0x180e1c4
|
25
|
+
# mail['Resent-Cc'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ResentCcField:0x180e1c4
|
26
|
+
#
|
27
|
+
# mail[:resent_cc].encoded #=> 'Resent-Cc: Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net\r\n'
|
28
|
+
# mail[:resent_cc].decoded #=> 'Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net'
|
29
|
+
# mail[:resent_cc].addresses #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net']
|
30
|
+
# mail[:resent_cc].formatted #=> ['Mikel Lindsaar <mikel@test.lindsaar.net>', 'ada@test.lindsaar.net']
|
31
|
+
class ResentCcField < CommonAddressField #:nodoc:
|
32
|
+
NAME = 'Resent-Cc'
|
54
33
|
end
|
55
34
|
end
|