def validate_each(record, attribute, value)
return unless value.present?
options = default_options.merge(self.options)
dns = ValidEmail2::Dns.new(options[:dns_timeout], options[:dns_nameserver])
addresses = sanitized_values(value).map { |v| ValidEmail2::Address.new(v, dns) }
error(record, attribute) && return unless addresses.all?(&:valid?)
if options[:disallow_dotted]
error(record, attribute) && return if addresses.any?(&:dotted?)
end
if options[:disallow_subaddressing]
error(record, attribute) && return if addresses.any?(&:subaddressed?)
end
if options[:disposable]
error(record, attribute) && return if addresses.any?(&:disposable?)
end
if options[:disposable_domain]
error(record, attribute) && return if addresses.any?(&:disposable_domain?)
end
if options[:disposable_with_allow_list]
error(record, attribute) && return if addresses.any? { |address| address.disposable? && !address.allow_listed? }
end
if options[:disposable_domain_with_allow_list]
error(record, attribute) && return if addresses.any? { |address| address.disposable_domain? && !address.allow_listed? }
end
if options[:deny_list]
error(record, attribute) && return if addresses.any?(&:deny_listed?)
end
if options[:mx]
error(record, attribute) && return unless addresses.all?(&:valid_mx?)
end
if options[:strict_mx]
error(record, attribute) && return unless addresses.all?(&:valid_strict_mx?)
end
end