Module: MailAddressVerifier
- Defined in:
- lib/mail_address_verifier.rb,
lib/mail_address_verifier/version.rb
Constant Summary collapse
- VERSION =
"0.1.0"
Class Method Summary collapse
-
.get_domain(mail_address) ⇒ Object
Your code goes here…
- .get_mx(domain) ⇒ Object
- .verify_by_domain(mail_address) ⇒ Object
- .verify_by_smtp(mail_address, myhost, myaddress) ⇒ Object
Class Method Details
.get_domain(mail_address) ⇒ Object
Your code goes here…
8 9 10 11 12 13 14 |
# File 'lib/mail_address_verifier.rb', line 8 def MailAddressVerifier.get_domain(mail_address) if mail_address =~ /^[^@]+@(.+)$/ domain = $1 else raise "Invalid mail address format." end end |
.get_mx(domain) ⇒ Object
16 17 18 19 20 |
# File 'lib/mail_address_verifier.rb', line 16 def MailAddressVerifier.get_mx(domain) Resolv::DNS.new.getresources(domain, Resolv::DNS::Resource::IN::MX)\ .sort_by {|r| r.preference}\ .map {|r| r.exchange.to_s} end |
.verify_by_domain(mail_address) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/mail_address_verifier.rb', line 37 def MailAddressVerifier.verify_by_domain(mail_address) result = false begin mx = get_mx(get_domain(mail_address)) unless mx.empty? result = true end rescue result = false end result end |
.verify_by_smtp(mail_address, myhost, myaddress) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/mail_address_verifier.rb', line 22 def MailAddressVerifier.verify_by_smtp(mail_address, myhost, myaddress) mx = get_mx(get_domain(mail_address)).first result = false Net::SMTP.start(mx) do |smtp| smtp.helo myhost smtp.mailfrom myaddress begin smtp.rcptto mail_address result = true rescue end end result end |