Skip to content

Instantly share code, notes, and snippets.

@thanashyam
Last active December 16, 2015 14:39
Show Gist options
  • Save thanashyam/5450312 to your computer and use it in GitHub Desktop.
Save thanashyam/5450312 to your computer and use it in GitHub Desktop.
def names_and_emails_from_multiple_addresses(addresses)
if addresses.is_a? String
addresses = addresses.split(/,|;/)
end
addresses = addresses.collect do |address|
next if address.blank?
address = address.gsub('"','').gsub("'",'')
matches = address.strip.scan(/(\w[^<\>]*)<(\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,10}\b)\>\z|\A<!--?((\b[A-Z0-9._%+-]+)@[A-Z0-9.-]+\.[A-Z]{2,10}\b)-->?\z/i)
if matches[0] && matches[0][1]
email = matches[0][1]
name = matches[0][0]
elsif matches[0] && matches[0][2]
email = matches[0][2]
name = matches [0][3]
else
# Validating plain email addresses,
simple_email_regex = /\b[-a-zA-Z0-9.'’_%+]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,10}\b/
simple_email = address.scan(simple_email_regex)
if simple_email
email = simple_email[0]
name = ""
end
end
unless email.blank? and name.blank?
"#{name.gsub(/\./, ' ').titleize.strip} <#{email.downcase.strip}>".strip
end
end
addresses.compact.uniq
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment