email_address_validation.rb 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. # Validation for email addresses
  2. class EmailAddressValidation
  3. attr_reader :email_address
  4. # @param [String] email_address Email address to be validated
  5. def initialize(email_address)
  6. @email_address = email_address
  7. end
  8. def to_s
  9. email_address
  10. end
  11. # Checks if the email address has a valid format.
  12. # Reports email addresses without dot in domain as valid (zammad@localhost).
  13. #
  14. # @return [true] if email address has valid format
  15. # @return [false] if email address has no valid format
  16. def valid_format?
  17. # Note: Don't use ValidEmail2::Address.valid? here because it requires the
  18. # email address to have a dot in its domain.
  19. @valid_format ||= email_address.match?(URI::MailTo::EMAIL_REGEXP)
  20. end
  21. # Checks if the domain of the email address has a valid MX record.
  22. #
  23. # @return [true] if email address domain has an MX record
  24. # @return [false] if email address domain has no MX record
  25. def valid_mx?
  26. return @valid_mx if @valid_mx
  27. validated_email_address = ValidEmail2::Address.new(email_address)
  28. @valid_mx = validated_email_address&.valid_mx?
  29. end
  30. end