Sha256: 82b11460c40e7a96045d2824fc1b3d0f0ea2c8306f5fd94b2a1371535051211f

Contents?: true

Size: 949 Bytes

Versions: 1

Compression:

Stored size: 949 Bytes

Contents

require "resolv"
require "mail"

module ValidEmail2
  class Address
    attr_accessor :address

    def initialize(address)
      @parse_error = false

      begin
        @raw_address = address
        @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
        tree = address.send(:tree)

        # Valid address needs to have a dot in the domain
        tree.domain.dot_atom_text.elements.size > 1
      else
        false
      end
    end

    def disposable?
      valid? && ValidEmail2.disposable_emails.include?(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

1 entries across 1 versions & 1 rubygems

Version Path
valid_email2-0.0.4 lib/valid_email2/address.rb