valid_email2 3.7.0 → 4.0.3
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/CHANGELOG.md +15 -0
- data/README.md +6 -0
- data/config/disposable_email_domains.txt +5779 -4
- data/lib/valid_email2/address.rb +4 -1
- data/lib/valid_email2/email_validator.rb +2 -2
- data/lib/valid_email2/version.rb +1 -1
- data/pull_mailchecker_emails.rb +1 -0
- data/valid_email2.gemspec +3 -2
- metadata +21 -7
data/lib/valid_email2/address.rb
CHANGED
@@ -20,9 +20,10 @@ module ValidEmail2
|
|
20
20
|
@prohibited_domain_characters_regex = val
|
21
21
|
end
|
22
22
|
|
23
|
-
def initialize(address)
|
23
|
+
def initialize(address, dns_timeout = 5)
|
24
24
|
@parse_error = false
|
25
25
|
@raw_address = address
|
26
|
+
@dns_timeout = dns_timeout
|
26
27
|
|
27
28
|
begin
|
28
29
|
@address = Mail::Address.new(address)
|
@@ -132,12 +133,14 @@ module ValidEmail2
|
|
132
133
|
|
133
134
|
def mx_servers
|
134
135
|
@mx_servers ||= Resolv::DNS.open do |dns|
|
136
|
+
dns.timeouts = @dns_timeout
|
135
137
|
dns.getresources(address.domain, Resolv::DNS::Resource::IN::MX)
|
136
138
|
end
|
137
139
|
end
|
138
140
|
|
139
141
|
def mx_or_a_servers
|
140
142
|
@mx_or_a_servers ||= Resolv::DNS.open do |dns|
|
143
|
+
dns.timeouts = @dns_timeout
|
141
144
|
(mx_servers.any? && mx_servers) ||
|
142
145
|
dns.getresources(address.domain, Resolv::DNS::Resource::IN::A)
|
143
146
|
end
|
@@ -5,14 +5,14 @@ require "active_model/validations"
|
|
5
5
|
module ValidEmail2
|
6
6
|
class EmailValidator < ActiveModel::EachValidator
|
7
7
|
def default_options
|
8
|
-
{ regex: true, disposable: false, mx: false, strict_mx: false, disallow_subaddressing: false, multiple: false }
|
8
|
+
{ regex: true, disposable: false, mx: false, strict_mx: false, disallow_subaddressing: false, multiple: false, dns_timeout: 5 }
|
9
9
|
end
|
10
10
|
|
11
11
|
def validate_each(record, attribute, value)
|
12
12
|
return unless value.present?
|
13
13
|
options = default_options.merge(self.options)
|
14
14
|
|
15
|
-
addresses = sanitized_values(value).map { |v| ValidEmail2::Address.new(v) }
|
15
|
+
addresses = sanitized_values(value).map { |v| ValidEmail2::Address.new(v, options[:dns_timeout]) }
|
16
16
|
|
17
17
|
error(record, attribute) && return unless addresses.all?(&:valid?)
|
18
18
|
|
data/lib/valid_email2/version.rb
CHANGED
data/pull_mailchecker_emails.rb
CHANGED
@@ -9,6 +9,7 @@ whitelisted_emails = %w(
|
|
9
9
|
onet.pl poczta.onet.pl fastmail.fm hushmail.com
|
10
10
|
hush.ai hush.com hushmail.me naver.com qq.com example.com
|
11
11
|
yandex.net gmx.com gmx.es webdesignspecialist.com.au vp.com
|
12
|
+
onit.com asics.com freemail.hu 139.com
|
12
13
|
)
|
13
14
|
|
14
15
|
existing_emails = File.open("config/disposable_email_domains.txt") { |f| f.read.split("\n") }
|
data/valid_email2.gemspec
CHANGED
@@ -21,9 +21,10 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.required_ruby_version = ">= 1.9.3"
|
22
22
|
|
23
23
|
spec.add_development_dependency "bundler", "~> 2.0"
|
24
|
-
spec.add_development_dependency "rake", "~> 12.3
|
25
|
-
spec.add_development_dependency "rspec", "~> 3.5
|
24
|
+
spec.add_development_dependency "rake", "~> 12.3"
|
25
|
+
spec.add_development_dependency "rspec", "~> 3.5"
|
26
26
|
spec.add_development_dependency "rspec-benchmark", "~> 0.6"
|
27
|
+
spec.add_development_dependency "net-smtp"
|
27
28
|
spec.add_development_dependency "pry"
|
28
29
|
spec.add_runtime_dependency "mail", "~> 2.5"
|
29
30
|
spec.add_runtime_dependency "activemodel", ">= 3.2"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: valid_email2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 4.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Micke Lisinge
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-02-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -30,28 +30,28 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 12.3
|
33
|
+
version: '12.3'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 12.3
|
40
|
+
version: '12.3'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 3.5
|
47
|
+
version: '3.5'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 3.5
|
54
|
+
version: '3.5'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rspec-benchmark
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -66,6 +66,20 @@ dependencies:
|
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0.6'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: net-smtp
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: pry
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -157,7 +171,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
157
171
|
- !ruby/object:Gem::Version
|
158
172
|
version: '0'
|
159
173
|
requirements: []
|
160
|
-
rubygems_version: 3.
|
174
|
+
rubygems_version: 3.3.3
|
161
175
|
signing_key:
|
162
176
|
specification_version: 4
|
163
177
|
summary: ActiveModel validation for email. Including MX lookup and disposable email
|