truemail 1.6.1 → 1.9.1

Sign up to get free protection for your applications and to get access to all the features.
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