Sha256: 231cc2ed67348226a628a50aa747482fd95779df6d93e9e87e829d4871989c2c

Contents?: true

Size: 1.3 KB

Versions: 10

Compression:

Stored size: 1.3 KB

Contents

# frozen_string_literal: true
require "email_assessor"
require "resolv"
require "mail"

module EmailAssessor
  class Address
    attr_accessor :address

    def initialize(address)
      @parse_error = false
      @raw_address = address

      begin
        @address = Mail::Address.new(address)
      rescue Mail::Field::ParseError
        @parse_error = true
      end
    end

    def valid?
      return false if @parse_error

      if address.domain && address.address == @raw_address
        domain = address.domain

        domain.match?(%r{\.}) && # Valid address domain must contain a period
          !domain.match?(%r{\.{2,}}) && # Valid address domain cannot have consecutive periods
          !domain.match?(%r{\A\.}) && # Valid address domain cannot start with a period
          domain.match?(%r{[a-z]\z}i) # Valid address domain must end with letters
      else
        false
      end
    end

    def disposable?
      valid? && EmailAssessor.domain_is_disposable?(address.domain)
    end

    def blacklisted?
      valid? && EmailAssessor.domain_is_blacklisted?(address.domain)
    end

    def valid_mx?
      return false unless valid?

      mx = []

      Resolv::DNS.open do |dns|
        mx.concat dns.getresources(address.domain, Resolv::DNS::Resource::IN::MX)
      end

      mx.any?
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
email_assessor-0.5.0 lib/email_assessor/address.rb
email_assessor-0.4.13 lib/email_assessor/address.rb
email_assessor-0.4.12 lib/email_assessor/address.rb
email_assessor-0.4.11 lib/email_assessor/address.rb
email_assessor-0.4.10 lib/email_assessor/address.rb
email_assessor-0.4.9 lib/email_assessor/address.rb
email_assessor-0.4.8 lib/email_assessor/address.rb
email_assessor-0.4.7 lib/email_assessor/address.rb
email_assessor-0.4.6 lib/email_assessor/address.rb
email_assessor-0.4.5 lib/email_assessor/address.rb