email_address_validation.rb 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. # Copyright (C) 2012-2025 Zammad Foundation, https://zammad-foundation.org/
  2. # Validation for email addresses
  3. class EmailAddressValidation
  4. attr_reader :email_address
  5. # @param [String] email_address Email address to be validated
  6. def initialize(email_address)
  7. @email_address = email_address
  8. end
  9. def to_s
  10. email_address
  11. end
  12. # Checks if the email address has a valid format.
  13. # Reports email addresses without dot in domain as valid (zammad@localhost).
  14. #
  15. # @param mx [Boolean] check only syntax or MX as well
  16. #
  17. # @return [true] if email address has valid format
  18. # @return [false] if email address has no valid format
  19. def valid?(check_mx: false)
  20. valid!(check_mx:)
  21. rescue InvalidEmailAddressError
  22. false
  23. end
  24. def valid!(check_mx: false)
  25. error_message = EmailAddressValidator.error email_address, host_validation: check_mx ? :mx : :syntax
  26. return true if error_message.blank?
  27. raise InvalidEmailAddressError, error_message
  28. end
  29. class InvalidEmailAddressError < StandardError
  30. def initialize(message = '')
  31. super("The email address is invalid: #{message}")
  32. end
  33. end
  34. end