What is the best/easy way to validate an email address in Ruby?

Solution 1:

You could look whether or not it matches a regexp like the one used in this Rails validator:

validates_format_of :email,:with => /\A[^@\s]+@([^@\s]+\.)+[^@\s]+\z/

But if you use Devise, simply do:

validates_format_of :email,:with => Devise::email_regexp

Source: http://lindsaar.net/2008/4/14/tip-4-detecting-a-valid-email-address

Edit 1:

useful website for tests: http://www.rubular.com/

Solution 2:

In Ruby? The same way as in any language.

Send a confirmation email to the address with a link that the recipient has to click before the email address is considered fully validated.

There are any number of reasons why a perfectly formatted address may still be invalid (no actual user at that address, blocked by spam filters, and so on). The only way to know for sure is a successfully completed end-to-end transaction of some description.

Solution 3:

I know that this is a old question but I was looking for a simple to way to do this. I came across a email_validator gem this is really simple to set up and use.

as a validator

validates :my_email_attribute, :email => true

Validation outside a model

EmailValidator.valid?('[email protected]') # boolean

I hope that this help everyone.

Happy Codding

Solution 4:

validates :email, presence: true, format: /\w+@\w+\.{1}[a-zA-Z]{2,}/

checks that email field is not blank and that one or more characters are both preceding the '@' and following it

Added specificity, any 1 or more word characters before an the @and any 1 or more word character after and in between specifically 1 . and at least 2 letters after

Solution 5:

You can use

<%=email_field_tag 'to[]','' ,:placeholder=>"Type an email address",:pattern=>"^([\w+-.%]+@[\w-.]+\.[A-Za-z]{2,4},*[\W]*)+$",:multiple => true%>