Sha256: c303eca78e84007dc781c371d11a408956a74cecd4f89dc6413a0dff60494b69

Contents?: true

Size: 747 Bytes

Versions: 2

Compression:

Stored size: 747 Bytes

Contents

# frozen_string_literal: true

module Truemail
  module Validate
    class Mx < Truemail::Validate::Base
      require 'resolv'

      ERROR = 'mx records not found'

      def run
        return false unless Truemail::Validate::Regex.check(result)
        result.domain = result.email[Truemail::RegexConstant::REGEX_EMAIL_PATTERN, 3]
        return true if success(!result.mail_servers.push(*mx_records).empty?)
        add_error(Truemail::Validate::Mx::ERROR)
        false
      end

      private

      def mx_records
        mx_records = Resolv::DNS.open { |dns| dns.getresources(result.domain, Resolv::DNS::Resource::IN::MX) }
        mx_records.sort_by(&:preference).map { |mx_record| mx_record.exchange.to_s }
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
truemail-0.1.2 lib/truemail/validate/mx.rb
truemail-0.1.1.3 lib/truemail/validate/mx.rb