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 +4 -4
- data/.codeclimate.yml +1 -1
- data/.reek.yml +5 -0
- data/.rubocop.yml +177 -6
- data/CHANGELOG.md +241 -1
- data/Gemfile.lock +55 -68
- data/LICENSE.txt +1 -1
- data/README.md +237 -90
- data/lib/truemail.rb +1 -1
- data/lib/truemail/audit/base.rb +8 -0
- data/lib/truemail/audit/dns.rb +26 -0
- data/lib/truemail/audit/ip.rb +28 -0
- data/lib/truemail/audit/ptr.rb +8 -37
- data/lib/truemail/auditor.rb +7 -5
- data/lib/truemail/configuration.rb +10 -3
- data/lib/truemail/core.rb +27 -22
- data/lib/truemail/executor.rb +11 -0
- data/lib/truemail/log/serializer/auditor_json.rb +25 -0
- data/lib/truemail/log/serializer/base.rb +17 -41
- data/lib/truemail/log/serializer/validator_base.rb +45 -0
- data/lib/truemail/log/serializer/{json.rb → validator_json.rb} +1 -1
- data/lib/truemail/log/serializer/{text.rb → validator_text.rb} +2 -2
- data/lib/truemail/logger.rb +1 -1
- data/lib/truemail/validate/mx.rb +1 -0
- data/lib/truemail/validator.rb +4 -4
- data/lib/truemail/version.rb +1 -1
- data/truemail.gemspec +17 -9
- metadata +48 -32
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4132e99e612c8a1f9309dd9b81ef2ce5c234296209d631411687a4622c8581d2
|
4
|
+
data.tar.gz: 360800f323194eaefa48592f4781ce232d9e205785b6eaea15fc22b8b6d28d24
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2786a16f5e4418cf704c1cc3eba5b4879072ed17e4a6a36180cb5994a8a824e7e492de4ec211c729783653e783538435f7b799b7f17d847d957511ba6a091687
|
7
|
+
data.tar.gz: 4ecc2dcfd6377826852e64f59471aa2c70fe84be8739d1b20e73350beffc9b4e932b4fac62c48869850d8a28157aeb7756238964d3126e62026ff7f79a999edb
|
data/.codeclimate.yml
CHANGED
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:
|
data/.rubocop.yml
CHANGED
@@ -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
|
data/CHANGELOG.md
CHANGED
@@ -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
|
-
|
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
|