email_checker 0.0.2 → 0.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/lib/email_checker/checker.rb +9 -0
- data/lib/email_checker/domain.rb +21 -4
- data/lib/email_checker/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4ce0e55f098f2eed3764851101fc8d5390944d73
|
4
|
+
data.tar.gz: 28b06a5b98b0fd9c9732a2af2cc0c05d3daba2c8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c9959ff3f032bcc13010933308c5a6771e26ac46c99964a507bb78813f6f4754c52dabe3cafbe40fe73f9160adbab4cd6b09b243a8332c3032fa4fe1edef87e5
|
7
|
+
data.tar.gz: fab981bf91741391cfbe9374fbb7014f6c787908e18b431e541d51bb09779cbc8e421de9a44d71ea408a605aa023573fb1290abe586facc4f03bb34b3e549157
|
@@ -2,14 +2,22 @@ require 'net/smtp'
|
|
2
2
|
|
3
3
|
module EmailChecker
|
4
4
|
class Checker
|
5
|
+
|
6
|
+
# @return [Domain]
|
5
7
|
attr_reader :domain
|
6
8
|
|
9
|
+
# Returns a new instance of Checker
|
10
|
+
#
|
11
|
+
# @param email [String] The email to Check
|
7
12
|
def initialize(email)
|
8
13
|
@email = email
|
9
14
|
email_m = email.match(EMAIL_PATTERN)
|
10
15
|
@domain = Domain.new(email_m[2])
|
11
16
|
end
|
12
17
|
|
18
|
+
# Checks if the email exists in the mail provider.
|
19
|
+
#
|
20
|
+
# @return [Boolean]
|
13
21
|
def email_exists_in_server?
|
14
22
|
mailfrom if EmailChecker.config.verifier_domain
|
15
23
|
rcptto.tap do
|
@@ -28,6 +36,7 @@ module EmailChecker
|
|
28
36
|
break if @smtp
|
29
37
|
end
|
30
38
|
fail EmailChecker::ServerConnectionError, "Unable to connect to any of the mail servers for #{@email}" unless @smtp
|
39
|
+
@smtp
|
31
40
|
end
|
32
41
|
|
33
42
|
def connect(address)
|
data/lib/email_checker/domain.rb
CHANGED
@@ -1,12 +1,19 @@
|
|
1
|
+
# @author Genaro Madrid
|
1
2
|
module EmailChecker
|
2
3
|
class Domain
|
4
|
+
|
5
|
+
# Returns a new instance of Domain
|
6
|
+
#
|
7
|
+
# @param domain [String] The domain name.
|
8
|
+
#
|
9
|
+
# @example EmailChecker::Domain.new('google.com')
|
3
10
|
def initialize(domain)
|
4
11
|
@domain = domain
|
5
12
|
end
|
6
13
|
|
7
|
-
# Checks if the domian exists and has valid MX and A records
|
14
|
+
# Checks if the domian exists and has valid MX and A records.
|
8
15
|
#
|
9
|
-
# @return [
|
16
|
+
# @return [Boolean]
|
10
17
|
def valid?
|
11
18
|
return false unless @domain
|
12
19
|
Timeout.timeout(SERVER_TIMEOUT) do
|
@@ -17,7 +24,7 @@ module EmailChecker
|
|
17
24
|
false
|
18
25
|
end
|
19
26
|
|
20
|
-
# Check if
|
27
|
+
# Check if the domian has valid MX records and it can receive emails.
|
21
28
|
# The MX server exists and it has valid A records.
|
22
29
|
#
|
23
30
|
# @return [Boolean]
|
@@ -29,21 +36,31 @@ module EmailChecker
|
|
29
36
|
false
|
30
37
|
end
|
31
38
|
|
32
|
-
#
|
39
|
+
# Validates that has at least 1 A record.
|
40
|
+
# Check if the domain exists.
|
33
41
|
#
|
34
42
|
# @return [Boolean]
|
35
43
|
def a_records?
|
36
44
|
a_records.any?
|
37
45
|
end
|
38
46
|
|
47
|
+
# The A records for the domain.
|
48
|
+
#
|
49
|
+
# @return [Array<Resolv::DNS::Resource::IN::A>]
|
39
50
|
def a_records
|
40
51
|
@a_records ||= dns.getresources(@domain, Resolv::DNS::Resource::IN::A)
|
41
52
|
end
|
42
53
|
|
54
|
+
# The MX records of the domain.
|
55
|
+
#
|
56
|
+
# @return [Array<Resolv::DNS::Resource::IN::MX>]
|
43
57
|
def mx_records
|
44
58
|
@mx_records ||= dns.getresources(@domain, Resolv::DNS::Resource::IN::MX).sort_by(&:preference)
|
45
59
|
end
|
46
60
|
|
61
|
+
# The servers that this domian MX records point at.
|
62
|
+
#
|
63
|
+
# @return [Array<Hash>] Array of type { preference: 1, address: '127.0.0.1' }
|
47
64
|
def mx_servers
|
48
65
|
return @mx_servers if @mx_servers
|
49
66
|
@mx_servers = []
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: email_checker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Genaro Madrid
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-12-
|
11
|
+
date: 2015-12-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|