# frozen_string_literal: true module Email class Validator def self.ensure_valid!(mail) Email::Validator.ensure_valid_address_lists!(mail) Email::Validator.ensure_valid_date!(mail) mail end def self.ensure_valid_address_lists!(mail) %i[to cc bcc].each do |field| addresses = mail[field] if addresses&.errors.present? mail[field] = addresses.to_s.scan(/\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}\b/i) end end end def self.ensure_valid_date!(mail) if mail.date.nil? raise Email::Receiver::InvalidPost, I18n.t("system_messages.email_reject_invalid_post_specified.date_invalid") end end end end