Sha256: 7e31372161027cc62872cb1f1d29357849262c543c9cdeda51926383508a8acf
Contents?: true
Size: 848 Bytes
Versions: 1
Compression:
Stored size: 848 Bytes
Contents
# frozen_string_literal: true require 'mail' require 'resolv' class EmailValidator < ActiveModel::EachValidator def validate_each(record, attribute, value) return if options[:allow_nil] && value.nil? return if options[:allow_blank] && value.blank? record.errors.add(attribute, :invalid, options) unless valid_format?(value) && valid_dns?(value) end protected def valid_format?(value) value =~ /\A[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]+\z/i end def valid_dns?(value) begin mail = Mail::Address.new(value) isvalid = mail.domain && mail.address == value if isvalid mail_servers = Resolv::DNS.open.getresources(mail.domain, Resolv::DNS::Resource::IN::MX) isvalid = !mail_servers.empty? end rescue Exception => e isvalid = false end isvalid end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
translation_cms-0.1.5 | app/validators/email_validator.rb |