truemail 1.6.1 → 1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 31b9d354c841d370094f66ba22e481aded3501b0b17206b61eeb1c768d756ea1
4
- data.tar.gz: dbe57fe9cdc4763b4fc60c75aaf313aa1dd4ddff2cb5f60c1af9b3a6caddb659
3
+ metadata.gz: 4132e99e612c8a1f9309dd9b81ef2ce5c234296209d631411687a4622c8581d2
4
+ data.tar.gz: 360800f323194eaefa48592f4781ce232d9e205785b6eaea15fc22b8b6d28d24
5
5
  SHA512:
6
- metadata.gz: 3e319f8eeaadba558bc79173fb5765c615c0b67112d49b45eeaee07b3c3f496019eb89ebb95f736c0413eb08d0e7b1b1b6579389bd02e13c33464eefef8aaa82
7
- data.tar.gz: 4093fc875a8363d7fe7211c0d1e698ac081c80ff63e8a01e3fc7bef913a65b71743afbc47f0de7eaa4d203f32e3560b40336b5d311b48449dde6542c9c8e9164
6
+ metadata.gz: 2786a16f5e4418cf704c1cc3eba5b4879072ed17e4a6a36180cb5994a8a824e7e492de4ec211c729783653e783538435f7b799b7f17d847d957511ba6a091687
7
+ data.tar.gz: 4ecc2dcfd6377826852e64f59471aa2c70fe84be8739d1b20e73350beffc9b4e932b4fac62c48869850d8a28157aeb7756238964d3126e62026ff7f79a999edb
@@ -7,7 +7,7 @@ checks:
7
7
  plugins:
8
8
  rubocop:
9
9
  enabled: true
10
- channel: rubocop-0-78
10
+ channel: rubocop-0-91
11
11
 
12
12
  reek:
13
13
  enabled: true
data/.reek.yml CHANGED
@@ -26,6 +26,7 @@ detectors:
26
26
  Attribute:
27
27
  exclude:
28
28
  - Truemail::Configuration#whitelist_validation
29
+ - Truemail::Configuration#not_rfc_mx_lookup_flow
29
30
  - Truemail::Configuration#smtp_safe_check
30
31
  - Truemail::Wrapper#attempts
31
32
 
@@ -38,6 +39,8 @@ detectors:
38
39
  - Truemail::Validate::Mx#a_record
39
40
  - Truemail::Audit::Base#verifier_domain
40
41
  - Truemail::Configuration#domain_matcher
42
+ - Truemail::Configuration#logger_options
43
+ - Truemail::Log::Serializer::Base#errors
41
44
 
42
45
  ControlParameter:
43
46
  exclude:
@@ -54,6 +57,8 @@ detectors:
54
57
  - Truemail::ConfigurationHelper#create_configuration
55
58
  - Truemail::Log::Serializer::Base#smtp_debug
56
59
  - Truemail::Log::Serializer::Text#data_composer
60
+ - Truemail::Log::Serializer::ValidatorBase#smtp_debug
61
+ - Truemail::Log::Serializer::ValidatorText#data_composer
57
62
 
58
63
  NilCheck:
59
64
  exclude:
@@ -40,6 +40,81 @@ Style/EmptyCaseCondition:
40
40
  Style/RescueStandardError:
41
41
  Enabled: false
42
42
 
43
+ Style/AccessorGrouping:
44
+ Enabled: true
45
+
46
+ Style/ArrayCoercion:
47
+ Enabled: true
48
+
49
+ Style/BisectedAttrAccessor:
50
+ Enabled: true
51
+
52
+ Style/CaseLikeIf:
53
+ Enabled: true
54
+
55
+ Style/ExplicitBlockArgument:
56
+ Enabled: true
57
+
58
+ Style/ExponentialNotation:
59
+ Enabled: true
60
+
61
+ Style/GlobalStdStream:
62
+ Enabled: true
63
+
64
+ Style/HashAsLastArrayItem:
65
+ Enabled: true
66
+
67
+ Style/HashEachMethods:
68
+ Enabled: true
69
+
70
+ Style/HashLikeCase:
71
+ Enabled: true
72
+
73
+ Style/HashTransformKeys:
74
+ Enabled: true
75
+
76
+ Style/HashTransformValues:
77
+ Enabled: true
78
+
79
+ Style/OptionalBooleanParameter:
80
+ Enabled: true
81
+
82
+ Style/RedundantAssignment:
83
+ Enabled: true
84
+
85
+ Style/RedundantFetchBlock:
86
+ Enabled: true
87
+
88
+ Style/RedundantFileExtensionInRequire:
89
+ Enabled: true
90
+
91
+ Style/RedundantRegexpCharacterClass:
92
+ Enabled: true
93
+
94
+ Style/RedundantRegexpEscape:
95
+ Enabled: true
96
+
97
+ Style/SingleArgumentDig:
98
+ Enabled: true
99
+
100
+ Style/SlicingWithRange:
101
+ Enabled: true
102
+
103
+ Style/StringConcatenation:
104
+ Enabled: true
105
+
106
+ Style/CombinableLoops:
107
+ Enabled: true
108
+
109
+ Style/KeywordParametersOrder:
110
+ Enabled: true
111
+
112
+ Style/RedundantSelfAssignment:
113
+ Enabled: true
114
+
115
+ Style/SoleNestedConditional:
116
+ Enabled: true
117
+
43
118
  Layout/LineLength:
44
119
  Max: 140
45
120
 
@@ -50,15 +125,9 @@ Layout/ClassStructure:
50
125
  - include
51
126
  - prepend
52
127
  - extend
53
- associations:
54
- - has_one
55
- - has_many
56
- - belongs_to
57
- - has_and_belongs_to_many
58
128
  ExpectedOrder:
59
129
  - module_inclusion
60
130
  - constants
61
- - associations
62
131
  - public_class_methods
63
132
  - initializer
64
133
  - public_methods
@@ -68,9 +137,108 @@ Layout/ClassStructure:
68
137
  Layout/EmptyLineAfterGuardClause:
69
138
  Enabled: false
70
139
 
140
+ Layout/SpaceAroundMethodCallOperator:
141
+ Enabled: true
142
+
143
+ Layout/EmptyLinesAroundAttributeAccessor:
144
+ Enabled: true
145
+
146
+ Layout/BeginEndAlignment:
147
+ Enabled: true
148
+
71
149
  Lint/NonDeterministicRequireOrder:
72
150
  Enabled: false
73
151
 
152
+ Lint/BinaryOperatorWithIdenticalOperands:
153
+ Enabled: true
154
+
155
+ Lint/DeprecatedOpenSSLConstant:
156
+ Enabled: true
157
+
158
+ Lint/DuplicateElsifCondition:
159
+ Enabled: true
160
+
161
+ Lint/DuplicateRescueException:
162
+ Enabled: true
163
+
164
+ Lint/EmptyConditionalBody:
165
+ Enabled: true
166
+
167
+ Lint/FloatComparison:
168
+ Enabled: true
169
+
170
+ Lint/MissingSuper:
171
+ Enabled: false
172
+
173
+ Lint/MixedRegexpCaptureTypes:
174
+ Enabled: true
175
+
176
+ Lint/OutOfRangeRegexpRef:
177
+ Enabled: true
178
+
179
+ Lint/RaiseException:
180
+ Enabled: true
181
+
182
+ Lint/SelfAssignment:
183
+ Enabled: true
184
+
185
+ Lint/StructNewOverride:
186
+ Enabled: true
187
+
188
+ Lint/TopLevelReturnWithArgument:
189
+ Enabled: true
190
+
191
+ Lint/UnreachableLoop:
192
+ Enabled: true
193
+
194
+ Lint/ConstantDefinitionInBlock:
195
+ Enabled: true
196
+
197
+ Lint/DuplicateRequire:
198
+ Enabled: true
199
+
200
+ Lint/EmptyFile:
201
+ Enabled: true
202
+
203
+ Lint/IdentityComparison:
204
+ Enabled: true
205
+
206
+ Lint/TrailingCommaInAttributeDeclaration:
207
+ Enabled: true
208
+
209
+ Lint/UselessMethodDefinition:
210
+ Enabled: true
211
+
212
+ Lint/UselessTimes:
213
+ Enabled: true
214
+
215
+ Performance/AncestorsInclude:
216
+ Enabled: true
217
+
218
+ Performance/BigDecimalWithNumericArgument:
219
+ Enabled: true
220
+
221
+ Performance/RedundantSortBlock:
222
+ Enabled: true
223
+
224
+ Performance/RedundantStringChars:
225
+ Enabled: true
226
+
227
+ Performance/ReverseFirst:
228
+ Enabled: true
229
+
230
+ Performance/SortReverse:
231
+ Enabled: true
232
+
233
+ Performance/Squeeze:
234
+ Enabled: true
235
+
236
+ Performance/StringInclude:
237
+ Enabled: true
238
+
239
+ Performance/Sum:
240
+ Enabled: true
241
+
74
242
  RSpec/ExampleLength:
75
243
  Enabled: false
76
244
 
@@ -94,3 +262,6 @@ RSpec/MessageSpies:
94
262
 
95
263
  RSpec/MultipleDescribes:
96
264
  Enabled: false
265
+
266
+ RSpec/MultipleMemoizedHelpers:
267
+ Enabled: false
@@ -1,8 +1,175 @@
1
1
  # Changelog
2
+
2
3
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
3
4
 
5
+ ## [1.9.1] - 2020.09.21
6
+
7
+ ### Changed
8
+
9
+ Migrated to updated Ruby 2.7.x syntax.
10
+
11
+ - Updated `Truemail::Configuration#logger=`
12
+
13
+ ## [1.9.0] - 2020.09.01
14
+
15
+ ### Added
16
+
17
+ - Ability to use `Truemail::Auditor` instance represented as json directly
18
+ - `Truemail::Log::Serializer::AuditorJson`
19
+
20
+ ### Changed
21
+
22
+ - `Truemail::Auditor`, `Truemail::Validator`
23
+ - serializers namespaces
24
+ - gem development dependencies
25
+ - gem documentation
26
+
27
+ ```ruby
28
+ Truemail.host_audit.as_json
29
+
30
+ =>
31
+ # Serialized Truemail::Auditor instance
32
+ {
33
+ "date": "2020-08-31 22:33:43 +0300",
34
+ "current_host_ip": "127.0.0.1",
35
+ "warnings": {
36
+ "dns": "A-record of verifier domain not refers to current host ip address", "ptr": "PTR-record does not reference to current verifier domain"
37
+ },
38
+ "configuration": {
39
+ "validation_type_by_domain": null,
40
+ "whitelist_validation": false,
41
+ "whitelisted_domains": null,
42
+ "blacklisted_domains": null,
43
+ "not_rfc_mx_lookup_flow": false,
44
+ "smtp_safe_check": false,
45
+ "email_pattern": "default gem value",
46
+ "smtp_error_body_pattern": "default gem value"
47
+ }
48
+ }
49
+ ```
50
+
51
+ ## [1.8.0] - 2020.06.21
52
+
53
+ ### Added
54
+
55
+ Separated audit features for verifier host.
56
+
57
+ - `Truemail::Audit::Ip`
58
+ - `Truemail::Audit::Dns`
59
+
60
+ ```ruby
61
+ Truemail.host_audit
62
+
63
+ => #<Truemail::Auditor:0x00005580df358828
64
+ @result=
65
+ #<struct Truemail::Auditor::Result
66
+ current_host_ip="127.0.0.1",
67
+ warnings={
68
+ :dns=>"a record of verifier domain not refers to current host ip address",
69
+ :ptr=>"ptr record does not reference to current verifier domain"
70
+ },
71
+ configuration=
72
+ #<Truemail::Configuration:0x00005615e86327a8
73
+ @blacklisted_domains=[],
74
+ @connection_attempts=2,
75
+ @connection_timeout=2,
76
+ @default_validation_type=:smtp,
77
+ @email_pattern=/(?=\A.{6,255}\z)(\A([\p{L}0-9]+[\w|\-|\.|\+]*)@((?i-mx:[\p{L}0-9]+([\-\.]{1}[\p{L}0-9]+)*\.[\p{L}]{2,63}))\z)/,
78
+ @response_timeout=2,
79
+ @smtp_error_body_pattern=/(?=.*550)(?=.*(user|account|customer|mailbox)).*/i,
80
+ @not_rfc_mx_lookup_flow=false,
81
+ @smtp_safe_check=false,
82
+ @validation_type_by_domain={},
83
+ @verifier_domain="example.com",
84
+ @verifier_email="verifier@example.com",
85
+ @whitelist_validation=false,
86
+ @whitelisted_domains=[]>
87
+ ```
88
+
89
+ ### Changed
90
+
91
+ - `Truemail::Auditor`
92
+ - `Truemail::Auditor::Result`
93
+ - `Truemail::Audit::Base`
94
+ - `Truemail::Audit::Ptr`
95
+ - `Truemail::VERSION`
96
+ - gem documentation
97
+
98
+ ## [1.7.1] - 2020.05.10
99
+
100
+ ### Added
101
+
102
+ - Ability to show `not_rfc_mx_lookup_flow` attribute in serialized validation result
103
+
104
+ ```ruby
105
+ Truemail.validate('nonexistent_email@bestweb.com.ua').as_json
106
+
107
+ =>
108
+ # Serialized Truemail::Validator instance
109
+ {
110
+ "date": "2020-05-10 10:00:00 +0200",
111
+ "email": "nonexistent_email@bestweb.com.ua",
112
+ "validation_type": "smtp",
113
+ "success": false,
114
+ "errors": {
115
+ "smtp": "smtp error"
116
+ },
117
+ "smtp_debug": [
118
+ {
119
+ "mail_host": "213.180.193.89",
120
+ "port_opened": true,
121
+ "connection": true,
122
+ "errors": {
123
+ "rcptto": "550 5.7.1 No such user!\n"
124
+ }
125
+ }
126
+ ],
127
+ "configuration": {
128
+ "validation_type_by_domain": null,
129
+ "whitelist_validation": false,
130
+ "whitelisted_domains": null,
131
+ "blacklisted_domains": null,
132
+ "not_rfc_mx_lookup_flow": false,
133
+ "smtp_safe_check": false,
134
+ "email_pattern": "default gem value",
135
+ "smtp_error_body_pattern": "default gem value"
136
+ }
137
+ }
138
+ ```
139
+
140
+ ### Changed
141
+
142
+ - `Truemail::Log::Serializer::Base`
143
+ - `Truemail::VERSION`
144
+ - gem documentation
145
+
146
+ ## [1.7.0] - 2020.05.09
147
+
148
+ ### Added
149
+
150
+ - Ability to use not RFC MX lookup flow (MX and Null MX records will be checked on the DNS validation layer only)
151
+
152
+ ```ruby
153
+ Truemail.configure do |config|
154
+ # Optional parameter. This option will provide to use not RFC MX lookup flow.
155
+ # It means that MX and Null MX records will be cheked on the DNS validation layer only.
156
+ # By default this option is disabled.
157
+ config.not_rfc_mx_lookup_flow = true
158
+ end
159
+ ```
160
+
161
+ ### Changed
162
+
163
+ - `Truemail.configuration`
164
+ - `Truemail::Validate::Mx`
165
+ - `Truemail::VERSION`
166
+ - gem development dependencies
167
+ - gem documentation
168
+
4
169
  ## [1.6.1] - 2020.03.23
170
+
5
171
  ### Changed
172
+
6
173
  - `Truemail.configuration`
7
174
  - `Truemail::ArgumentError`
8
175
  - `Truemail::Audit::Ptr`
@@ -11,26 +178,35 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
11
178
  - gem documentation
12
179
 
13
180
  ### Removed
181
+
14
182
  `Truemail::Configuration.retry_count` deprecated, and alias for this method has been removed. Please use `Truemail::Configuration.connection_attempts` instead.
15
183
 
16
184
  ## [1.6.0] - 2020-02-01
185
+
17
186
  ### Added
18
- - Possibility to use `Truemail::Validator` instance represented as json directly
187
+
188
+ - Ability to use `Truemail::Validator` instance represented as json directly
19
189
 
20
190
  ### Changed
191
+
21
192
  - gem development dependencies
22
193
  - gem documentation
23
194
 
24
195
  ## [1.5.1] - 2020-01-20
196
+
25
197
  ### Changed
198
+
26
199
  - gem development dependencies
27
200
  - gem documentation
28
201
 
29
202
  ## [1.5.0] - 2019-12-29
203
+
30
204
  ### Added
205
+
31
206
  - Supporting of internationalized emails ([EAI](https://en.wikipedia.org/wiki/International_email)). Now you can validate emails, like: `dörte@sörensen.de`, `квіточка@пошта.укр`, `alegría@mañana.es`
32
207
 
33
208
  ### Changed
209
+
34
210
  - `Truemail::RegexConstant::REGEX_DOMAIN`
35
211
  - `Truemail::RegexConstant::REGEX_EMAIL_PATTERN`
36
212
  - `Truemail::Validator::Result`
@@ -42,22 +218,29 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
42
218
  - linters configs
43
219
 
44
220
  ## [1.4.2] - 2019-11-27
221
+
45
222
  ### Changed
223
+
46
224
  - `Truemail::Configuration`
47
225
  - gem development dependencies
48
226
  - linters configs
49
227
 
50
228
  ## [1.4.1] - 2019-11-20
229
+
51
230
  ### Changed
231
+
52
232
  - gem development dependencies
53
233
  - gem documentation
54
234
  - linters configs
55
235
 
56
236
  ### Removed
237
+
57
238
  - truemail rspec helpers (moved to independent gem [`truemail-rspec`](https://github.com/truemail-rb/truemail-rspec))
58
239
 
59
240
  ## [1.4.0] - 2019-10-28
241
+
60
242
  ### Added
243
+
61
244
  - Event logger (ability to output validation logs to stdout/file)
62
245
  - JSON serializer for validator instance
63
246
  - [Changelog](CHANGELOG.md)
@@ -85,6 +268,7 @@ Truemail::Log::Serializer::Json.call(Truemail.validate('nonexistent_email@bestwe
85
268
  ```
86
269
 
87
270
  ### Changed
271
+
88
272
  - `Truemail::Configuration`
89
273
  - `Truemail::Validator`
90
274
  - `Truemail::Validate::Regex`
@@ -93,11 +277,14 @@ Truemail::Log::Serializer::Json.call(Truemail.validate('nonexistent_email@bestwe
93
277
  - gem description
94
278
 
95
279
  ## [1.3.0] - 2019-09-16
280
+
96
281
  ### Added
282
+
97
283
  - Ability to create new `Truemail::Configuration` instance with block
98
284
  - `Truemail::Validate::Smtp::Request::Configuration`
99
285
 
100
286
  ### Changed
287
+
101
288
  - `Truemail::Wrapper`
102
289
  - `Truemail::Validate::Base`
103
290
  - `Truemail::Validator`
@@ -115,15 +302,20 @@ Truemail::Log::Serializer::Json.call(Truemail.validate('nonexistent_email@bestwe
115
302
  - gem description
116
303
 
117
304
  ## [1.2.1] - 2019-06-27
305
+
118
306
  ### Fixed
307
+
119
308
  - Removed memoization from ```DomainListMatch#whitelisted_domain?```
120
309
 
121
310
  ### Changed
311
+
122
312
  - `Truemail::VERSION`
123
313
  - gem documentation
124
314
 
125
315
  ## [1.2.0] - 2019-06-26
316
+
126
317
  ### Added
318
+
127
319
  - Configurable option: validation for whitelisted domains only.
128
320
 
129
321
  When email domain in whitelist and ```whitelist_validation``` is sets equal to ```true``` validation type will be passed to other validators. Validation of email which not contains whitelisted domain always will return ```false```.
@@ -168,11 +360,14 @@ Truemail.validate('email@domain.com', with: :regex)
168
360
  ```
169
361
 
170
362
  ### Changed
363
+
171
364
  - `Truemail::VERSION`
172
365
  - gem documentation
173
366
 
174
367
  ## [1.1.0] - 2019-06-18
368
+
175
369
  ### Added
370
+
176
371
  - Configurable default validation type, [issue details](https://github.com/rubygarage/truemail/issues/48)
177
372
 
178
373
  You can predefine default validation type for ```Truemail.validate('email@email.com')``` call without with-parameter. Available validation types: ```:regex```, ```:mx```, ```:smtp```. By default validation type still remains ```:smtp```
@@ -185,11 +380,14 @@ end
185
380
  ```
186
381
 
187
382
  ### Changed
383
+
188
384
  - `Truemail::VERSION`
189
385
  - gem documentation
190
386
 
191
387
  ## [1.0.1] - 2019-06-08
388
+
192
389
  ### Added
390
+
193
391
  - Result validation type marker for domain list match check
194
392
 
195
393
  ```ruby
@@ -219,11 +417,14 @@ Truemail.validate('email@black-domain.com')
219
417
  ```
220
418
 
221
419
  ### Changed
420
+
222
421
  - `Truemail::VERSION`
223
422
  - gem documentation
224
423
 
225
424
  ## [1.0] - 2019-06-04
425
+
226
426
  ### Added
427
+
227
428
  - Feature domain whitelist blacklist. Other validations will not processed even if it was defined in ```validation_type_for```.
228
429
 
229
430
  ```ruby
@@ -237,6 +438,7 @@ Truemail.configure do |config|
237
438
  config.blacklisted_domains = ['somedomain1.com', 'somedomain2.com']
238
439
  end
239
440
  ```
441
+
240
442
  and
241
443
 
242
444
  ```ruby
@@ -245,17 +447,22 @@ Truemail.configuration.blacklisted_domains = ['somedomain1.com', 'somedomain2.co
245
447
  ```
246
448
 
247
449
  ### Removed
450
+
248
451
  - ```:skip``` validation type for ```validation_type_for```
249
452
 
250
453
  ### Fixed
454
+
251
455
  - error key in `lower_snake_case`
252
456
 
253
457
  ### Changed
458
+
254
459
  - `Truemail::VERSION`
255
460
  - gem documentation
256
461
 
257
462
  ## [0.2] - 2019-05-23
463
+
258
464
  ### Added
465
+
259
466
  - skip validation by domain for validation_type_for configuration option:
260
467
 
261
468
  ```ruby
@@ -263,68 +470,93 @@ Truemail.configure do |config|
263
470
  config.validation_type_for = { 'somedomain.com' => :skip }
264
471
  end
265
472
  ```
473
+
266
474
  and
475
+
267
476
  ```ruby
268
477
  Truemail.configuration.validation_type_for = { 'somedomain.com' => :skip }
269
478
  ```
479
+
270
480
  ### Changed
481
+
271
482
  - `Truemail::VERSION`
272
483
  - gem documentation
273
484
 
274
485
  ## [0.1.10] - 2019-05-10
486
+
275
487
  ### Added
488
+
276
489
  - SMTP error body configurable option, [issue details](https://github.com/rubygarage/truemail/issues/19)
277
490
 
278
491
  ### Changed
492
+
279
493
  - `Truemail::VERSION`
280
494
  - gem documentation
281
495
 
282
496
  ## [0.1.9] - 2019-04-29
497
+
283
498
  ### Fixed
499
+
284
500
  - Empty ptr constant
285
501
 
286
502
  ## [0.1.8] - 2019-04-29
503
+
287
504
  ### Added
505
+
288
506
  - Reverse trace, [issue details](https://github.com/rubygarage/truemail/issues/18)
289
507
 
290
508
  ### Fixed
509
+
291
510
  - Behaviour of current host address resolver, [issue details](https://github.com/rubygarage/truemail/issues/18)
292
511
 
293
512
  ### Changed
513
+
294
514
  - `Truemail::VERSION`
295
515
  - gem documentation
296
516
 
297
517
  ## [0.1.7] - 2019-04-17
518
+
298
519
  ### Added
520
+
299
521
  - PTR record audit, [issue details](https://github.com/rubygarage/truemail/issues/18)
300
522
 
301
523
  ### Changed
524
+
302
525
  - `Truemail::VERSION`
303
526
  - gem documentation
304
527
 
305
528
  ## [0.1.6] - 2019-04-08
529
+
306
530
  ### Added
531
+
307
532
  - MX gem logic with [RFC 7505](https://tools.ietf.org/html/rfc7505), null MX record supporting, [issue details](https://github.com/rubygarage/truemail/issues/27)
308
533
  - [Contributing guideline](CONTRIBUTING.md)
309
534
 
310
535
  ### Fixed
536
+
311
537
  - Multihomed MX records supporting, [issue details](https://github.com/rubygarage/truemail/issues/28)
312
538
 
313
539
  ### Changed
540
+
314
541
  - `Truemail::VERSION`
315
542
  - gem documentation
316
543
 
317
544
  ## [0.1.5] - 2019-04-05
545
+
318
546
  ### Added
547
+
319
548
  - Retries for ```Truemail::Validate::Smtp``` for cases when one mx server
320
549
 
321
550
  ### Changed
551
+
322
552
  - ```Truemail::Configuration``` class, please use ```.connection_attempts``` instead ```.retry_count```
323
553
  - `Truemail::VERSION`
324
554
  - gem documentation
325
555
 
326
556
  ## [0.1.4] - 2019-04-01
557
+
327
558
  ### Added
559
+
328
560
  - Checking A record presence if ```MX``` and ```CNAME``` records not exist, [issue details](https://github.com/rubygarage/truemail/issues/10)
329
561
  - Handling of ```CNAME``` records, [issue details](https://github.com/rubygarage/truemail/issues/11)
330
562
  - Checking A record if ```MX``` and ```CNAME``` records not found, [issue details](https://github.com/rubygarage/truemail/issues/12)
@@ -333,14 +565,18 @@ Truemail.configuration.validation_type_for = { 'somedomain.com' => :skip }
333
565
  - ```.valid?``` helper
334
566
 
335
567
  ### Changed
568
+
336
569
  - `Truemail::VERSION`
337
570
  - gem documentation
338
571
 
339
572
  ## [0.1.3] - 2019-03-27
573
+
340
574
  ### Added
575
+
341
576
  - Independent domain name extractor to ```Truemail::Validate::Mx#run```
342
577
 
343
578
  ### Fixed
579
+
344
580
  - Default ```REGEX_EMAIL_PATTERN```, [issue details](https://github.com/rubygarage/truemail/issues/7)
345
581
  * local part of address can't start with a dot or special symbol
346
582
  * local part of address can include ```+``` symbol
@@ -349,11 +585,14 @@ Truemail.configuration.validation_type_for = { 'somedomain.com' => :skip }
349
585
  - Case sensitive domain names, [issue details](https://github.com/rubygarage/truemail/issues/9)
350
586
 
351
587
  ### Changed
588
+
352
589
  - `Truemail::VERSION`
353
590
  - gem documentation
354
591
 
355
592
  ## [0.1.0] - 2019-03-26
593
+
356
594
  ### Added
595
+
357
596
  - 'SMTP safe check' option for cases when SMTP server does not return an exact answer that the email does not exist.
358
597
 
359
598
  ```ruby
@@ -401,5 +640,6 @@ Truemail.validate('email@example.com')
401
640
  ```
402
641
 
403
642
  ### Changed
643
+
404
644
  - `Truemail::VERSION`
405
645
  - gem documentation