123456789101112131415161718192021222324252627282930313233343536373839 |
- # Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/
- class Sequencer::Unit::Import::Common::User::Email::CheckValidity < Sequencer::Unit::Base
- prepend ::Sequencer::Unit::Import::Common::Model::Mixin::Skip::Action
- skip_action :skipped, :failed
- uses :mapped
- def process
- return if mapped[:email].blank?
- # TODO: This should be done totally somewhere central
- mapped[:email] = ensure_valid_email(mapped[:email])
- end
- private
- def ensure_valid_email(source)
- # TODO: should get unified with User#check_email
- email = extract_email(source)
- return if !email
- email.downcase
- end
- def extract_email(source)
- # Support format like "Bob Smith (bob@example.com)"
- if source =~ %r{\((.+@.+)\)}
- source = $1
- end
- Mail::Address.new(source).address
- rescue
- return source if source !~ %r{<\s*([^>]+)}
- $1.strip
- end
- end
|