mail 2.7.1 → 2.9.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.
Files changed (126) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +135 -59
  3. data/lib/mail/attachments_list.rb +5 -6
  4. data/lib/mail/body.rb +51 -74
  5. data/lib/mail/constants.rb +27 -5
  6. data/lib/mail/elements/address.rb +27 -27
  7. data/lib/mail/elements/address_list.rb +1 -1
  8. data/lib/mail/elements/content_disposition_element.rb +1 -1
  9. data/lib/mail/elements/content_location_element.rb +1 -1
  10. data/lib/mail/elements/content_transfer_encoding_element.rb +1 -1
  11. data/lib/mail/elements/content_type_element.rb +8 -4
  12. data/lib/mail/elements/date_time_element.rb +1 -1
  13. data/lib/mail/elements/envelope_from_element.rb +13 -7
  14. data/lib/mail/elements/message_ids_element.rb +14 -5
  15. data/lib/mail/elements/mime_version_element.rb +1 -1
  16. data/lib/mail/elements/phrase_list.rb +7 -2
  17. data/lib/mail/elements/received_element.rb +20 -6
  18. data/lib/mail/encodings/7bit.rb +5 -0
  19. data/lib/mail/encodings/base64.rb +2 -2
  20. data/lib/mail/encodings/quoted_printable.rb +2 -2
  21. data/lib/mail/encodings/unix_to_unix.rb +1 -1
  22. data/lib/mail/encodings.rb +32 -61
  23. data/lib/mail/envelope.rb +11 -14
  24. data/lib/mail/field.rb +100 -86
  25. data/lib/mail/field_list.rb +61 -8
  26. data/lib/mail/fields/bcc_field.rb +33 -52
  27. data/lib/mail/fields/cc_field.rb +27 -49
  28. data/lib/mail/fields/comments_field.rb +26 -37
  29. data/lib/mail/fields/common_address_field.rb +162 -0
  30. data/lib/mail/fields/common_date_field.rb +56 -0
  31. data/lib/mail/fields/common_field.rb +77 -0
  32. data/lib/mail/fields/common_message_id_field.rb +41 -0
  33. data/lib/mail/fields/content_description_field.rb +6 -14
  34. data/lib/mail/fields/content_disposition_field.rb +11 -38
  35. data/lib/mail/fields/content_id_field.rb +23 -51
  36. data/lib/mail/fields/content_location_field.rb +10 -25
  37. data/lib/mail/fields/content_transfer_encoding_field.rb +30 -31
  38. data/lib/mail/fields/content_type_field.rb +49 -75
  39. data/lib/mail/fields/date_field.rb +22 -51
  40. data/lib/mail/fields/from_field.rb +27 -49
  41. data/lib/mail/fields/in_reply_to_field.rb +37 -49
  42. data/lib/mail/fields/keywords_field.rb +17 -31
  43. data/lib/mail/fields/message_id_field.rb +24 -71
  44. data/lib/mail/fields/mime_version_field.rb +18 -30
  45. data/lib/mail/fields/named_structured_field.rb +10 -0
  46. data/lib/mail/fields/named_unstructured_field.rb +10 -0
  47. data/lib/mail/fields/optional_field.rb +5 -7
  48. data/lib/mail/fields/{common/parameter_hash.rb → parameter_hash.rb} +12 -10
  49. data/lib/mail/fields/received_field.rb +42 -57
  50. data/lib/mail/fields/references_field.rb +34 -49
  51. data/lib/mail/fields/reply_to_field.rb +27 -49
  52. data/lib/mail/fields/resent_bcc_field.rb +27 -49
  53. data/lib/mail/fields/resent_cc_field.rb +27 -49
  54. data/lib/mail/fields/resent_date_field.rb +4 -29
  55. data/lib/mail/fields/resent_from_field.rb +27 -49
  56. data/lib/mail/fields/resent_message_id_field.rb +4 -29
  57. data/lib/mail/fields/resent_sender_field.rb +26 -56
  58. data/lib/mail/fields/resent_to_field.rb +27 -49
  59. data/lib/mail/fields/return_path_field.rb +49 -54
  60. data/lib/mail/fields/sender_field.rb +33 -55
  61. data/lib/mail/fields/structured_field.rb +2 -30
  62. data/lib/mail/fields/subject_field.rb +8 -11
  63. data/lib/mail/fields/to_field.rb +27 -49
  64. data/lib/mail/fields/unstructured_field.rb +15 -48
  65. data/lib/mail/fields.rb +9 -0
  66. data/lib/mail/header.rb +69 -110
  67. data/lib/mail/mail.rb +32 -27
  68. data/lib/mail/matchers/attachment_matchers.rb +15 -0
  69. data/lib/mail/message.rb +67 -78
  70. data/lib/mail/multibyte/chars.rb +9 -167
  71. data/lib/mail/multibyte/unicode.rb +1 -1
  72. data/lib/mail/multibyte/utils.rb +26 -43
  73. data/lib/mail/multibyte.rb +1 -11
  74. data/lib/mail/network/delivery_methods/exim.rb +5 -4
  75. data/lib/mail/network/delivery_methods/file_delivery.rb +13 -12
  76. data/lib/mail/network/delivery_methods/logger_delivery.rb +2 -5
  77. data/lib/mail/network/delivery_methods/sendmail.rb +27 -35
  78. data/lib/mail/network/delivery_methods/smtp.rb +81 -30
  79. data/lib/mail/network/delivery_methods/smtp_connection.rb +10 -19
  80. data/lib/mail/network/delivery_methods/test_mailer.rb +8 -6
  81. data/lib/mail/network/retriever_methods/base.rb +13 -13
  82. data/lib/mail/network/retriever_methods/imap.rb +8 -5
  83. data/lib/mail/network/retriever_methods/pop3.rb +22 -22
  84. data/lib/mail/network/retriever_methods/test_retriever.rb +2 -1
  85. data/lib/mail/parsers/address_lists_parser.rb +33073 -33064
  86. data/lib/mail/parsers/address_lists_parser.rl +11 -0
  87. data/lib/mail/parsers/content_disposition_parser.rb +837 -828
  88. data/lib/mail/parsers/content_disposition_parser.rl +11 -0
  89. data/lib/mail/parsers/content_location_parser.rb +773 -764
  90. data/lib/mail/parsers/content_location_parser.rl +12 -1
  91. data/lib/mail/parsers/content_transfer_encoding_parser.rb +477 -468
  92. data/lib/mail/parsers/content_transfer_encoding_parser.rl +11 -0
  93. data/lib/mail/parsers/content_type_parser.rb +974 -965
  94. data/lib/mail/parsers/content_type_parser.rl +11 -0
  95. data/lib/mail/parsers/date_time_parser.rb +841 -832
  96. data/lib/mail/parsers/date_time_parser.rl +11 -0
  97. data/lib/mail/parsers/envelope_from_parser.rb +3627 -3530
  98. data/lib/mail/parsers/envelope_from_parser.rl +11 -0
  99. data/lib/mail/parsers/message_ids_parser.rb +5110 -2800
  100. data/lib/mail/parsers/message_ids_parser.rl +16 -1
  101. data/lib/mail/parsers/mime_version_parser.rb +466 -457
  102. data/lib/mail/parsers/mime_version_parser.rl +11 -0
  103. data/lib/mail/parsers/phrase_lists_parser.rb +839 -830
  104. data/lib/mail/parsers/phrase_lists_parser.rl +12 -1
  105. data/lib/mail/parsers/received_parser.rb +8692 -8683
  106. data/lib/mail/parsers/received_parser.rl +11 -0
  107. data/lib/mail/parsers/rfc5322.rl +28 -13
  108. data/lib/mail/parsers.rb +11 -17
  109. data/lib/mail/part.rb +24 -28
  110. data/lib/mail/parts_list.rb +57 -0
  111. data/lib/mail/smtp_envelope.rb +57 -0
  112. data/lib/mail/utilities.rb +321 -69
  113. data/lib/mail/version.rb +1 -1
  114. data/lib/mail/yaml.rb +30 -0
  115. data/lib/mail.rb +2 -22
  116. metadata +83 -19
  117. data/lib/mail/check_delivery_params.rb +0 -60
  118. data/lib/mail/core_extensions/smtp.rb +0 -28
  119. data/lib/mail/core_extensions/string.rb +0 -17
  120. data/lib/mail/fields/common/address_container.rb +0 -17
  121. data/lib/mail/fields/common/common_address.rb +0 -161
  122. data/lib/mail/fields/common/common_date.rb +0 -36
  123. data/lib/mail/fields/common/common_field.rb +0 -52
  124. data/lib/mail/fields/common/common_message_id.rb +0 -49
  125. data/lib/mail/version_specific/ruby_1_8.rb +0 -163
  126. data/lib/mail/version_specific/ruby_1_9.rb +0 -278
metadata CHANGED
@@ -1,15 +1,28 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mail
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.7.1
4
+ version: 2.9.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mikel Lindsaar
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2018-10-13 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: logger
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '0'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: '0'
13
26
  - !ruby/object:Gem::Dependency
14
27
  name: mini_mime
15
28
  requirement: !ruby/object:Gem::Requirement
@@ -24,6 +37,48 @@ dependencies:
24
37
  - - ">="
25
38
  - !ruby/object:Gem::Version
26
39
  version: 0.1.1
40
+ - !ruby/object:Gem::Dependency
41
+ name: net-smtp
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ - !ruby/object:Gem::Dependency
55
+ name: net-imap
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ type: :runtime
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ - !ruby/object:Gem::Dependency
69
+ name: net-pop
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ type: :runtime
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
27
82
  - !ruby/object:Gem::Dependency
28
83
  name: bundler
29
84
  requirement: !ruby/object:Gem::Requirement
@@ -66,6 +121,20 @@ dependencies:
66
121
  - - "~>"
67
122
  - !ruby/object:Gem::Version
68
123
  version: '3.0'
124
+ - !ruby/object:Gem::Dependency
125
+ name: rspec-benchmark
126
+ requirement: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ version: '0'
131
+ type: :development
132
+ prerelease: false
133
+ version_requirements: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ version: '0'
69
138
  - !ruby/object:Gem::Dependency
70
139
  name: rdoc
71
140
  requirement: !ruby/object:Gem::Requirement
@@ -106,11 +175,8 @@ files:
106
175
  - lib/mail.rb
107
176
  - lib/mail/attachments_list.rb
108
177
  - lib/mail/body.rb
109
- - lib/mail/check_delivery_params.rb
110
178
  - lib/mail/configuration.rb
111
179
  - lib/mail/constants.rb
112
- - lib/mail/core_extensions/smtp.rb
113
- - lib/mail/core_extensions/string.rb
114
180
  - lib/mail/elements.rb
115
181
  - lib/mail/elements/address.rb
116
182
  - lib/mail/elements/address_list.rb
@@ -140,12 +206,10 @@ files:
140
206
  - lib/mail/fields/bcc_field.rb
141
207
  - lib/mail/fields/cc_field.rb
142
208
  - lib/mail/fields/comments_field.rb
143
- - lib/mail/fields/common/address_container.rb
144
- - lib/mail/fields/common/common_address.rb
145
- - lib/mail/fields/common/common_date.rb
146
- - lib/mail/fields/common/common_field.rb
147
- - lib/mail/fields/common/common_message_id.rb
148
- - lib/mail/fields/common/parameter_hash.rb
209
+ - lib/mail/fields/common_address_field.rb
210
+ - lib/mail/fields/common_date_field.rb
211
+ - lib/mail/fields/common_field.rb
212
+ - lib/mail/fields/common_message_id_field.rb
149
213
  - lib/mail/fields/content_description_field.rb
150
214
  - lib/mail/fields/content_disposition_field.rb
151
215
  - lib/mail/fields/content_id_field.rb
@@ -158,7 +222,10 @@ files:
158
222
  - lib/mail/fields/keywords_field.rb
159
223
  - lib/mail/fields/message_id_field.rb
160
224
  - lib/mail/fields/mime_version_field.rb
225
+ - lib/mail/fields/named_structured_field.rb
226
+ - lib/mail/fields/named_unstructured_field.rb
161
227
  - lib/mail/fields/optional_field.rb
228
+ - lib/mail/fields/parameter_hash.rb
162
229
  - lib/mail/fields/received_field.rb
163
230
  - lib/mail/fields/references_field.rb
164
231
  - lib/mail/fields/reply_to_field.rb
@@ -233,16 +300,15 @@ files:
233
300
  - lib/mail/parsers/rfc5322_lexical_tokens.rl
234
301
  - lib/mail/part.rb
235
302
  - lib/mail/parts_list.rb
303
+ - lib/mail/smtp_envelope.rb
236
304
  - lib/mail/utilities.rb
237
305
  - lib/mail/values/unicode_tables.dat
238
306
  - lib/mail/version.rb
239
- - lib/mail/version_specific/ruby_1_8.rb
240
- - lib/mail/version_specific/ruby_1_9.rb
307
+ - lib/mail/yaml.rb
241
308
  homepage: https://github.com/mikel/mail
242
309
  licenses:
243
310
  - MIT
244
311
  metadata: {}
245
- post_install_message:
246
312
  rdoc_options:
247
313
  - "--exclude"
248
314
  - lib/mail/values/unicode_tables.dat
@@ -252,16 +318,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
252
318
  requirements:
253
319
  - - ">="
254
320
  - !ruby/object:Gem::Version
255
- version: '0'
321
+ version: '2.5'
256
322
  required_rubygems_version: !ruby/object:Gem::Requirement
257
323
  requirements:
258
324
  - - ">="
259
325
  - !ruby/object:Gem::Version
260
326
  version: '0'
261
327
  requirements: []
262
- rubyforge_project:
263
- rubygems_version: 2.7.6
264
- signing_key:
328
+ rubygems_version: 3.6.9
265
329
  specification_version: 4
266
330
  summary: Mail provides a nice Ruby DSL for making, sending and reading emails.
267
331
  test_files: []
@@ -1,60 +0,0 @@
1
- # frozen_string_literal: true
2
- module Mail
3
- module CheckDeliveryParams #:nodoc:
4
- class << self
5
- def check(mail)
6
- [ check_from(mail.smtp_envelope_from),
7
- check_to(mail.smtp_envelope_to),
8
- check_message(mail) ]
9
- end
10
-
11
- def check_from(addr)
12
- if Utilities.blank?(addr)
13
- raise ArgumentError, "SMTP From address may not be blank: #{addr.inspect}"
14
- end
15
-
16
- check_addr 'From', addr
17
- end
18
-
19
- def check_to(addrs)
20
- if Utilities.blank?(addrs)
21
- raise ArgumentError, "SMTP To address may not be blank: #{addrs.inspect}"
22
- end
23
-
24
- Array(addrs).map do |addr|
25
- check_addr 'To', addr
26
- end
27
- end
28
-
29
- def check_addr(addr_name, addr)
30
- validate_smtp_addr addr do |error_message|
31
- raise ArgumentError, "SMTP #{addr_name} address #{error_message}: #{addr.inspect}"
32
- end
33
- end
34
-
35
- def validate_smtp_addr(addr)
36
- if addr
37
- if addr.bytesize > 2048
38
- yield 'may not exceed 2kB'
39
- end
40
-
41
- if /[\r\n]/ =~ addr
42
- yield 'may not contain CR or LF line breaks'
43
- end
44
- end
45
-
46
- addr
47
- end
48
-
49
- def check_message(message)
50
- message = message.encoded if message.respond_to?(:encoded)
51
-
52
- if Utilities.blank?(message)
53
- raise ArgumentError, 'An encoded message is required to send an email'
54
- end
55
-
56
- message
57
- end
58
- end
59
- end
60
- end
@@ -1,28 +0,0 @@
1
- # encoding: utf-8
2
- # frozen_string_literal: true
3
-
4
- # This is a backport of r30294 from ruby trunk because of a bug in net/smtp.
5
- # http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&amp;revision=30294
6
- #
7
- # Fixed in Ruby 1.9.3 - tlsconnect also does not exist in some early versions of ruby
8
- if RUBY_VERSION < '1.9.3'
9
- module Net
10
- class SMTP
11
- begin
12
- alias_method :original_tlsconnect, :tlsconnect
13
-
14
- def tlsconnect(s)
15
- verified = false
16
- begin
17
- original_tlsconnect(s).tap { verified = true }
18
- ensure
19
- unless verified
20
- s.close rescue nil
21
- end
22
- end
23
- end
24
- rescue NameError
25
- end
26
- end
27
- end
28
- end
@@ -1,17 +0,0 @@
1
- # encoding: utf-8
2
- # frozen_string_literal: true
3
- class String #:nodoc:
4
-
5
- unless method_defined?(:ascii_only?)
6
- # Backport from Ruby 1.9 checks for non-us-ascii characters.
7
- def ascii_only?
8
- self !~ MATCH_NON_US_ASCII
9
- end
10
-
11
- MATCH_NON_US_ASCII = /[^\x00-\x7f]/
12
- end
13
-
14
- unless method_defined?(:bytesize)
15
- alias :bytesize :length
16
- end
17
- end
@@ -1,17 +0,0 @@
1
- # frozen_string_literal: true
2
- module Mail
3
-
4
- class AddressContainer < Array
5
-
6
- def initialize(field, list = [])
7
- @field = field
8
- super(list)
9
- end
10
-
11
- def <<(address)
12
- @field << address
13
- end
14
-
15
- end
16
-
17
- end
@@ -1,161 +0,0 @@
1
- # encoding: utf-8
2
- # frozen_string_literal: true
3
- require 'mail/fields/common/address_container'
4
-
5
- module Mail
6
- module CommonAddress # :nodoc:
7
- def parse(val = value)
8
- unless Utilities.blank?(val)
9
- @address_list = AddressList.new(encode_if_needed(val))
10
- else
11
- nil
12
- end
13
- end
14
-
15
- def charset
16
- @charset
17
- end
18
-
19
- def encode_if_needed(val) #:nodoc:
20
- # Need to join arrays of addresses into a single value
21
- if val.kind_of?(Array)
22
- val.compact.map { |a| encode_if_needed a }.join(', ')
23
-
24
- # Pass through UTF-8; encode non-UTF-8.
25
- else
26
- utf8_if_needed(val) || Encodings.encode_non_usascii(val, charset)
27
- end
28
- end
29
-
30
- # Allows you to iterate through each address object in the address_list
31
- def each
32
- address_list.addresses.each do |address|
33
- yield(address)
34
- end
35
- end
36
-
37
- # Returns the address string of all the addresses in the address list
38
- def addresses
39
- list = address_list.addresses.map { |a| a.address }
40
- Mail::AddressContainer.new(self, list)
41
- end
42
-
43
- # Returns the formatted string of all the addresses in the address list
44
- def formatted
45
- list = address_list.addresses.map { |a| a.format }
46
- Mail::AddressContainer.new(self, list)
47
- end
48
-
49
- # Returns the display name of all the addresses in the address list
50
- def display_names
51
- list = address_list.addresses.map { |a| a.display_name }
52
- Mail::AddressContainer.new(self, list)
53
- end
54
-
55
- # Returns the actual address objects in the address list
56
- def addrs
57
- list = address_list.addresses
58
- Mail::AddressContainer.new(self, list)
59
- end
60
-
61
- # Returns a hash of group name => address strings for the address list
62
- def groups
63
- address_list.addresses_grouped_by_group
64
- end
65
-
66
- # Returns the addresses that are part of groups
67
- def group_addresses
68
- decoded_group_addresses
69
- end
70
-
71
- # Returns a list of decoded group addresses
72
- def decoded_group_addresses
73
- groups.map { |k,v| v.map { |a| a.decoded } }.flatten
74
- end
75
-
76
- # Returns a list of encoded group addresses
77
- def encoded_group_addresses
78
- groups.map { |k,v| v.map { |a| a.encoded } }.flatten
79
- end
80
-
81
- # Returns the name of all the groups in a string
82
- def group_names # :nodoc:
83
- address_list.group_names
84
- end
85
-
86
- def default
87
- addresses
88
- end
89
-
90
- def <<(val)
91
- case
92
- when val.nil?
93
- raise ArgumentError, "Need to pass an address to <<"
94
- when Utilities.blank?(val)
95
- parse(encoded)
96
- else
97
- self.value = [self.value, val].reject {|a| Utilities.blank?(a) }.join(", ")
98
- end
99
- end
100
-
101
- def value=(val)
102
- super
103
- parse(self.value)
104
- end
105
-
106
- private
107
-
108
- if 'string'.respond_to?(:encoding)
109
- # Pass through UTF-8 addresses
110
- def utf8_if_needed(val)
111
- if charset =~ /\AUTF-?8\z/i
112
- val
113
- elsif val.encoding == Encoding::UTF_8
114
- val
115
- elsif (utf8 = val.dup.force_encoding(Encoding::UTF_8)).valid_encoding?
116
- utf8
117
- end
118
- end
119
- else
120
- def utf8_if_needed(val)
121
- if charset =~ /\AUTF-?8\z/i
122
- val
123
- end
124
- end
125
- end
126
-
127
- def do_encode(field_name)
128
- return '' if Utilities.blank?(value)
129
- address_array = address_list.addresses.reject { |a| encoded_group_addresses.include?(a.encoded) }.compact.map { |a| a.encoded }
130
- address_text = address_array.join(", \r\n\s")
131
- group_array = groups.map { |k,v| "#{k}: #{v.map { |a| a.encoded }.join(", \r\n\s")};" }
132
- group_text = group_array.join(" \r\n\s")
133
- return_array = [address_text, group_text].reject { |a| Utilities.blank?(a) }
134
- "#{field_name}: #{return_array.join(", \r\n\s")}\r\n"
135
- end
136
-
137
- def do_decode
138
- return nil if Utilities.blank?(value)
139
- address_array = address_list.addresses.reject { |a| decoded_group_addresses.include?(a.decoded) }.map { |a| a.decoded }
140
- address_text = address_array.join(", ")
141
- group_array = groups.map { |k,v| "#{k}: #{v.map { |a| a.decoded }.join(", ")};" }
142
- group_text = group_array.join(" ")
143
- return_array = [address_text, group_text].reject { |a| Utilities.blank?(a) }
144
- return_array.join(", ")
145
- end
146
-
147
- def address_list # :nodoc:
148
- @address_list ||= AddressList.new(value)
149
- end
150
-
151
- def get_group_addresses(group_list)
152
- if group_list.respond_to?(:addresses)
153
- group_list.addresses.map do |address|
154
- Mail::Address.new(address)
155
- end
156
- else
157
- []
158
- end
159
- end
160
- end
161
- end
@@ -1,36 +0,0 @@
1
- # encoding: utf-8
2
- # frozen_string_literal: true
3
- module Mail
4
- module CommonDate # :nodoc:
5
- # Returns a date time object of the parsed date
6
- def date_time
7
- ::DateTime.parse("#{element.date_string} #{element.time_string}")
8
- end
9
-
10
- def default
11
- date_time
12
- end
13
-
14
- def parse(val = value)
15
- unless Utilities.blank?(val)
16
- @element = Mail::DateTimeElement.new(val)
17
- else
18
- nil
19
- end
20
- end
21
-
22
- private
23
-
24
- def do_encode(field_name)
25
- "#{field_name}: #{value}\r\n"
26
- end
27
-
28
- def do_decode
29
- "#{value}"
30
- end
31
-
32
- def element
33
- @element ||= Mail::DateTimeElement.new(value)
34
- end
35
- end
36
- end
@@ -1,52 +0,0 @@
1
- # encoding: utf-8
2
- # frozen_string_literal: true
3
- module Mail
4
- module CommonField # :nodoc:
5
- include Mail::Constants
6
-
7
- def name=(value)
8
- @name = value
9
- end
10
-
11
- def name
12
- @name ||= nil
13
- end
14
-
15
- def value=(value)
16
- @length = nil
17
- @element = nil
18
- @value = value.is_a?(Array) ? value : value.to_s
19
- end
20
-
21
- def value
22
- @value
23
- end
24
-
25
- def to_s
26
- decoded.to_s
27
- end
28
-
29
- def default
30
- decoded
31
- end
32
-
33
- def field_length
34
- @length ||= "#{name}: #{encode(decoded)}".length
35
- end
36
-
37
- def responsible_for?( val )
38
- name.to_s.casecmp(val.to_s) == 0
39
- end
40
-
41
- private
42
-
43
- FILENAME_RE = /\b(filename|name)=([^;"\r\n]+\s[^;"\r\n]+)/
44
- def ensure_filename_quoted(value)
45
- if value.is_a?(String)
46
- value.sub FILENAME_RE, '\1="\2"'
47
- else
48
- value
49
- end
50
- end
51
- end
52
- end
@@ -1,49 +0,0 @@
1
- # encoding: utf-8
2
- # frozen_string_literal: true
3
- module Mail
4
- module CommonMessageId # :nodoc:
5
- def element
6
- @element ||= Mail::MessageIdsElement.new(value) unless Utilities.blank?(value)
7
- end
8
-
9
- def parse(val = value)
10
- unless Utilities.blank?(val)
11
- @element = Mail::MessageIdsElement.new(val)
12
- else
13
- nil
14
- end
15
- end
16
-
17
- def message_id
18
- element.message_id if element
19
- end
20
-
21
- def message_ids
22
- element.message_ids if element
23
- end
24
-
25
- def default
26
- return nil unless message_ids
27
- if message_ids.length == 1
28
- message_ids[0]
29
- else
30
- message_ids
31
- end
32
- end
33
-
34
- private
35
-
36
- def do_encode(field_name)
37
- %Q{#{field_name}: #{formated_message_ids("\r\n ")}\r\n}
38
- end
39
-
40
- def do_decode
41
- formated_message_ids(' ')
42
- end
43
-
44
- def formated_message_ids(join)
45
- message_ids.map{ |m| "<#{m}>" }.join(join) if message_ids
46
- end
47
-
48
- end
49
- end