valid_email 0.0.13 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +5 -0
- data/History.md +11 -0
- data/README.md +3 -4
- data/config/locales/pt-BR.yml +5 -0
- data/config/valid_email.yml +25 -18
- data/lib/valid_email/mx_validator.rb +6 -0
- data/lib/valid_email/validate_email.rb +5 -1
- data/lib/valid_email/version.rb +1 -1
- data/spec/email_validator_spec.rb +12 -0
- data/spec/validate_email_spec.rb +1 -0
- data/valid_email.gemspec +10 -3
- metadata +11 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e74f85e1ed674767b2c063685a30bb2ebbc6e9fe
|
4
|
+
data.tar.gz: fe2254848da959f25c12732890ba4acd020c618d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c5b07afeee1c98a219e66d40358e46a898939951cfeb6f5aef6d2bd6f76b77f62e3da37442d614746905c54b0a6acee5cf5f4c1ae3fa67a18f2607b1d2d95493
|
7
|
+
data.tar.gz: db5b162817ff28baee70881951062943363808f7f519954d15e91a0eb66207839249b84f8f0b819396e4a22c16de18081a4e209d9d8e4d42126559a5fde3f924
|
data/.travis.yml
CHANGED
data/History.md
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
|
2
|
+
0.1.0 / 2017-09-27
|
3
|
+
==================
|
4
|
+
|
5
|
+
* #86 Change dependency on mail to >= 2.6.1
|
6
|
+
* #85 adding disposable email domains from getnada
|
7
|
+
* #84 ValidateEmail.valid?: make domain validation true by default
|
8
|
+
* #83 Allow to configure timeouts for dns
|
9
|
+
* #82 Travis CI. Support for more Ruby versions
|
10
|
+
* #80 rescue Mail::Field::ParseError also in domain_valid?
|
11
|
+
* #78 Added pt-BR translation
|
data/README.md
CHANGED
@@ -40,12 +40,11 @@ Or
|
|
40
40
|
|
41
41
|
validates :email, :email => {:message => I18n.t('validations.errors.models.user.invalid_email')}, :mx => {:message => I18n.t('validations.errors.models.user.invalid_mx')}
|
42
42
|
|
43
|
-
|
44
|
-
|
45
|
-
validates :email, :email => {:domain => true}
|
46
|
-
|
43
|
+
By default, the email domain is validated using a regular expression, which does not require an external service and improves performance.
|
47
44
|
Alternatively, you can check if an email domain has a MX or A record by using `:mx_with_fallback` instead of `:mx`.
|
48
45
|
|
46
|
+
validates :email, :email => {:mx_with_fallback => true}
|
47
|
+
|
49
48
|
You can detect disposable accounts
|
50
49
|
|
51
50
|
validates :email, :email => {:ban_disposable_email => true, :message => I18n.t('validations.errors.models.user.invalid_email')}
|
data/config/valid_email.yml
CHANGED
@@ -1,16 +1,4 @@
|
|
1
1
|
disposable_email_services:
|
2
|
-
- mailinator.com
|
3
|
-
- devnullmail.com
|
4
|
-
- daddymail.biz
|
5
|
-
- grr.la
|
6
|
-
- drdrb.net
|
7
|
-
- getairmail.com
|
8
|
-
- evopo.com
|
9
|
-
- 6paq.com
|
10
|
-
- paplease.com
|
11
|
-
- acentri.com
|
12
|
-
- droplar.com
|
13
|
-
- appixie.com
|
14
2
|
- 0-mail.com
|
15
3
|
- 0815.ru
|
16
4
|
- 0clickemail.com
|
@@ -29,21 +17,18 @@ disposable_email_services:
|
|
29
17
|
- 675hosting.com
|
30
18
|
- 675hosting.net
|
31
19
|
- 675hosting.org
|
20
|
+
- 6paq.com
|
32
21
|
- 6url.com
|
33
22
|
- 75hosting.com
|
34
23
|
- 75hosting.net
|
35
24
|
- 75hosting.org
|
36
25
|
- 7tags.com
|
37
26
|
- 9ox.net
|
38
|
-
- disposableemailaddresses.com
|
39
|
-
- putthisinyourspamdatabase.com
|
40
|
-
- sendspamhere.com
|
41
|
-
- spamherelots.com
|
42
|
-
- spamhereplease.com
|
43
|
-
- tempemail.net
|
44
27
|
- a-bc.net
|
28
|
+
- acentri.com
|
45
29
|
- afrobacon.com
|
46
30
|
- ajaxapp.net
|
31
|
+
- amail.club
|
47
32
|
- amail4.me
|
48
33
|
- amilegit.com
|
49
34
|
- amiri.net
|
@@ -53,8 +38,11 @@ disposable_email_services:
|
|
53
38
|
- antichef.com
|
54
39
|
- antichef.net
|
55
40
|
- antispam.de
|
41
|
+
- appixie.com
|
56
42
|
- armyspy.com
|
57
43
|
- azmeil.tk
|
44
|
+
- banit.club
|
45
|
+
- banit.me
|
58
46
|
- baxomale.ht.cx
|
59
47
|
- beefmilk.com
|
60
48
|
- binkmail.com
|
@@ -69,11 +57,13 @@ disposable_email_services:
|
|
69
57
|
- bsnow.net
|
70
58
|
- bugmenot.com
|
71
59
|
- bumpymail.com
|
60
|
+
- cars2.club
|
72
61
|
- casualdx.com
|
73
62
|
- centermail.com
|
74
63
|
- centermail.net
|
75
64
|
- chogmail.com
|
76
65
|
- choicemail1.com
|
66
|
+
- cmail.club
|
77
67
|
- cool.fr.nf
|
78
68
|
- correo.blogos.net
|
79
69
|
- cosmorph.com
|
@@ -84,6 +74,7 @@ disposable_email_services:
|
|
84
74
|
- cust.in
|
85
75
|
- cuvox.de
|
86
76
|
- dacoolest.com
|
77
|
+
- daddymail.biz
|
87
78
|
- dandikmail.com
|
88
79
|
- dayrep.com
|
89
80
|
- deadaddress.com
|
@@ -96,6 +87,7 @@ disposable_email_services:
|
|
96
87
|
- discardmail.com
|
97
88
|
- discardmail.de
|
98
89
|
- disposableaddress.com
|
90
|
+
- disposableemailaddresses.com
|
99
91
|
- disposeamail.com
|
100
92
|
- disposemail.com
|
101
93
|
- dispostable.com
|
@@ -107,6 +99,9 @@ disposable_email_services:
|
|
107
99
|
- dontreg.com
|
108
100
|
- dontsendmespam.de
|
109
101
|
- drdrb.com
|
102
|
+
- drdrb.net
|
103
|
+
- droplar.com
|
104
|
+
- duck2.club
|
110
105
|
- dump-email.info
|
111
106
|
- dumpandjunk.com
|
112
107
|
- dumpmail.de
|
@@ -133,6 +128,7 @@ disposable_email_services:
|
|
133
128
|
- etranquil.com
|
134
129
|
- etranquil.net
|
135
130
|
- etranquil.org
|
131
|
+
- evopo.com
|
136
132
|
- explodemail.com
|
137
133
|
- fakeinbox.com
|
138
134
|
- fakeinformation.com
|
@@ -158,6 +154,7 @@ disposable_email_services:
|
|
158
154
|
- get1mail.com
|
159
155
|
- get2mail.fr
|
160
156
|
- getairmail.com
|
157
|
+
- getnada.com
|
161
158
|
- getonemail.com
|
162
159
|
- getonemail.net
|
163
160
|
- ghosttexter.de
|
@@ -174,6 +171,7 @@ disposable_email_services:
|
|
174
171
|
- gowikitv.com
|
175
172
|
- great-host.in
|
176
173
|
- greensloth.com
|
174
|
+
- grr.la
|
177
175
|
- gsrv.co.uk
|
178
176
|
- guerillamail.biz
|
179
177
|
- guerillamail.com
|
@@ -299,6 +297,8 @@ disposable_email_services:
|
|
299
297
|
- myspacepimpedup.com
|
300
298
|
- myspamless.com
|
301
299
|
- mytrashmail.com
|
300
|
+
- nada.email
|
301
|
+
- nada.ltd
|
302
302
|
- neomailbox.com
|
303
303
|
- nepwk.com
|
304
304
|
- nervmich.net
|
@@ -336,6 +336,7 @@ disposable_email_services:
|
|
336
336
|
- ovpn.to
|
337
337
|
- owlpic.com
|
338
338
|
- pancakemail.com
|
339
|
+
- paplease.com
|
339
340
|
- pimpedupmyspace.com
|
340
341
|
- pjjkp.com
|
341
342
|
- politikerclub.de
|
@@ -345,6 +346,7 @@ disposable_email_services:
|
|
345
346
|
- proxymail.eu
|
346
347
|
- prtnx.com
|
347
348
|
- punkass.com
|
349
|
+
- putthisinyourspamdatabase.com
|
348
350
|
- qq.com
|
349
351
|
- quickinbox.com
|
350
352
|
- rcpt.at
|
@@ -366,6 +368,7 @@ disposable_email_services:
|
|
366
368
|
- sandelf.de
|
367
369
|
- saynotospams.com
|
368
370
|
- selfdestructingmail.com
|
371
|
+
- sendspamhere.com
|
369
372
|
- sharklasers.com
|
370
373
|
- shiftmail.com
|
371
374
|
- shitmail.me
|
@@ -413,6 +416,8 @@ disposable_email_services:
|
|
413
416
|
- spamgourmet.com
|
414
417
|
- spamgourmet.net
|
415
418
|
- spamgourmet.org
|
419
|
+
- spamherelots.com
|
420
|
+
- spamhereplease.com
|
416
421
|
- spamhole.com
|
417
422
|
- spamify.com
|
418
423
|
- spaminator.de
|
@@ -440,6 +445,7 @@ disposable_email_services:
|
|
440
445
|
- tempe-mail.com
|
441
446
|
- tempemail.biz
|
442
447
|
- tempemail.com
|
448
|
+
- tempemail.net
|
443
449
|
- tempinbox.co.uk
|
444
450
|
- tempinbox.com
|
445
451
|
- tempmail.it
|
@@ -500,6 +506,7 @@ disposable_email_services:
|
|
500
506
|
- whyspam.me
|
501
507
|
- willselfdestruct.com
|
502
508
|
- winemaven.info
|
509
|
+
- wmail.club
|
503
510
|
- wronghead.com
|
504
511
|
- wuzup.net
|
505
512
|
- wuzupmail.net
|
@@ -3,6 +3,12 @@ require 'active_model/validations'
|
|
3
3
|
require 'resolv'
|
4
4
|
require 'valid_email/validate_email'
|
5
5
|
class MxValidator < ActiveModel::EachValidator
|
6
|
+
def self.config
|
7
|
+
@@config = { timeouts: [] } unless defined? @@config
|
8
|
+
|
9
|
+
@@config
|
10
|
+
end
|
11
|
+
|
6
12
|
def validate_each(record,attribute,value)
|
7
13
|
r = ValidateEmail.mx_valid?(value)
|
8
14
|
record.errors.add attribute, (options[:message] || I18n.t(:invalid, :scope => "valid_email.validations.email")) unless r
|
@@ -10,7 +10,7 @@ class ValidateEmail
|
|
10
10
|
def valid?(value, user_options={})
|
11
11
|
options = {
|
12
12
|
:mx => false,
|
13
|
-
:domain =>
|
13
|
+
:domain => true,
|
14
14
|
:message => nil
|
15
15
|
}.merge(user_options)
|
16
16
|
|
@@ -92,6 +92,7 @@ class ValidateEmail
|
|
92
92
|
|
93
93
|
mx = []
|
94
94
|
Resolv::DNS.open do |dns|
|
95
|
+
dns.timeouts = MxValidator.config[:timeouts] unless MxValidator.config[:timeouts].empty?
|
95
96
|
mx.concat dns.getresources(m.domain, Resolv::DNS::Resource::IN::MX)
|
96
97
|
mx.concat dns.getresources(m.domain, Resolv::DNS::Resource::IN::A) if fallback
|
97
98
|
end
|
@@ -110,6 +111,9 @@ class ValidateEmail
|
|
110
111
|
return false unless m.domain
|
111
112
|
|
112
113
|
!(m.domain =~ DOMAIN_REGEX).nil?
|
114
|
+
|
115
|
+
rescue Mail::Field::ParseError
|
116
|
+
false
|
113
117
|
end
|
114
118
|
|
115
119
|
def ban_disposable_email?(value)
|
data/lib/valid_email/version.rb
CHANGED
@@ -1 +1 @@
|
|
1
|
-
ValidEmailVersion = "0.0
|
1
|
+
ValidEmailVersion = "0.1.0"
|
@@ -100,6 +100,18 @@ describe EmailValidator do
|
|
100
100
|
expect(subject.errors[:email]).to eq errors
|
101
101
|
end
|
102
102
|
|
103
|
+
it "fails when email ends with a period" do
|
104
|
+
subject.email = 'john@doe.com.'
|
105
|
+
expect(subject.valid?).to be_falsey
|
106
|
+
expect(subject.errors[:email]).to eq errors
|
107
|
+
end
|
108
|
+
|
109
|
+
it "fails when email ends with special characters" do
|
110
|
+
subject.email = 'john@doe.com&'
|
111
|
+
expect(subject.valid?).to be_falsey
|
112
|
+
expect(subject.errors[:email]).to eq errors
|
113
|
+
end
|
114
|
+
|
103
115
|
it "fails when email is valid with information" do
|
104
116
|
subject.email = '"John Doe" <john@doe.com>'
|
105
117
|
expect(subject.valid?).to be_falsey
|
data/spec/validate_email_spec.rb
CHANGED
data/valid_email.gemspec
CHANGED
@@ -21,7 +21,14 @@ Gem::Specification.new do |s|
|
|
21
21
|
|
22
22
|
# specify any dependencies here; for example:
|
23
23
|
s.add_development_dependency "rspec", "~> 2.99"
|
24
|
-
s.add_development_dependency "rake"
|
25
|
-
s.add_runtime_dependency "mail", "
|
26
|
-
|
24
|
+
s.add_development_dependency "rake", '< 11.0'
|
25
|
+
s.add_runtime_dependency "mail", ">= 2.6.1"
|
26
|
+
if Gem::Version.new(RUBY_VERSION) <= Gem::Version.new('2.0')
|
27
|
+
s.add_runtime_dependency 'mime-types', '<= 2.6.2'
|
28
|
+
end
|
29
|
+
if Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.2.2')
|
30
|
+
s.add_runtime_dependency "activemodel", '< 5.0.0'
|
31
|
+
else
|
32
|
+
s.add_runtime_dependency "activemodel"
|
33
|
+
end
|
27
34
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: valid_email
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ramihajamalala Hery
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-09-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -28,28 +28,28 @@ dependencies:
|
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - "<"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
33
|
+
version: '11.0'
|
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: '0'
|
40
|
+
version: '11.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: mail
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: 2.6.1
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 2.6.1
|
55
55
|
- !ruby/object:Gem::Dependency
|
@@ -76,6 +76,7 @@ files:
|
|
76
76
|
- ".gitignore"
|
77
77
|
- ".travis.yml"
|
78
78
|
- Gemfile
|
79
|
+
- History.md
|
79
80
|
- LICENSE
|
80
81
|
- README.md
|
81
82
|
- Rakefile
|
@@ -87,6 +88,7 @@ files:
|
|
87
88
|
- config/locales/id.yml
|
88
89
|
- config/locales/ja.yml
|
89
90
|
- config/locales/pl.yml
|
91
|
+
- config/locales/pt-BR.yml
|
90
92
|
- config/locales/ru.yml
|
91
93
|
- config/locales/sv.yml
|
92
94
|
- config/locales/uk.yml
|
@@ -126,7 +128,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
126
128
|
version: '0'
|
127
129
|
requirements: []
|
128
130
|
rubyforge_project: valid_email
|
129
|
-
rubygems_version: 2.
|
131
|
+
rubygems_version: 2.6.10
|
130
132
|
signing_key:
|
131
133
|
specification_version: 4
|
132
134
|
summary: ActiveModel Validation for email
|