Git Product home page Git Product logo

validates_email_format_of's Introduction

validates_email_format_of

Build Status

A Ruby gem to validate email addresses against RFC 2822 and RFC 5322.

Why this email validator?

This gem is the O.G. email validation gem for Rails. It was started back in 2006.

Why use this validator? Instead of trying to validate email addresses with one giant regular expression, this library parses addresses character by character. This lets us handle weird cases likes nested comments. Gross but technically allowed.

In reality, most email validating scripts will get you where you need to go. This library just aims to go all the way.

Installation

Add the gem to your Gemfile with:

gem 'validates_email_format_of'

Usage in a Rails app

class Person < ActiveRecord::Base
  validates :email, :email_format => { :message => "is not looking good" }

  # OR

  validates_email_format_of :email, :message => "is not looking good"
end

You can use the included rspec matcher as well:

require "validates_email_format_of/rspec_matcher"

describe Person do
  it { should validate_email_format_of(:email).with_message("is not looking good") }
end

Useage without Rails

# Optional, if you want error messages to be in your language
ValidatesEmailFormatOf::load_i18n_locales
I18n.locale = :pl

ValidatesEmailFormatOf::validate_email_format("[email protected]") # => nil
ValidatesEmailFormatOf::validate_email_format("invalid@") # => ["does not appear to be a valid email address"]

Options

Option Type Description
:message String A custom error message when the email format is invalid (default is: "does not appear to be a valid email address")
:check_mx Boolean Check domain for a valid MX record (default is false)
:check_mx_timeout Integer Timeout in seconds for checking MX records before a ResolvTimeout is raised (default is 3).
:mx_message String A custom error message when the domain does not match a valid MX record (default is: "is not routable"). Ignored unless :check_mx option is true.
:local_length Integer Maximum number of characters allowed in the local part (everything before the '@') (default is 64)
:domain_length Integer Maximum number of characters allowed in the domain part (everything after the '@') (default is 255)
:generate_message Boolean Return the I18n key of the error message instead of the error message itself (default is false)

The standard ActiveModel validation options (:on, :if, :unless, :allow_nil, :allow_blank, etc...) all work as well when using the gem as part of a Rails application.

Testing

You can see our current Ruby and Rails test matrix here.

To execute the unit tests against all the Rails versions we support run bundle exec appraisal rspec or run against an individual version with bundle exec appraisal rails-6.0 rspec.

Contributing

If you think we're letting some rules about valid email formats slip through the cracks, don't just update the parser. Instead, add a failing test and demonstrate that the described email address should be treated differently. A link to an appropriate RFC is the best way to do this. Then change the gem code to make the test pass.

describe "i_think_this_is_not_a_v@lid_email_addre.ss" do
  # According to http://..., this email address IS NOT valid.
  it { should have_errors_on_email.because("does not appear to be valid") }
end

describe "i_think_this_is_a_v@lid_email_addre.ss" do
  # According to http://..., this email address IS valid.
  it { should_not have_errors_on_email }
end

Yes, our Rspec syntax is that simple!

Homepage

Credits

Written by Alex Dunae (dunae.ca), 2006-22.

Many thanks to the plugin's recent contributors: https://github.com/alexdunae/validates_email_format_of/contributors

Thanks to Francis Hwang (http://fhwang.net/) at Diversion Media for creating the 1.1 update.

Thanks to Travis Sinnott for creating the 1.3 update.

Thanks to Denis Ahearn at Riverock Technologies (http://www.riverocktech.com/) for creating the 1.4 update.

Thanks to George Anderson (http://github.com/george) and 'history' (http://github.com/history) for creating the 1.4.1 update.

Thanks to Isaac Betesh (https://github.com/betesh) for converting tests to Rspec and refactoring for version 1.6.0.

validates_email_format_of's People

Contributors

alexdunae avatar arturt avatar betesh avatar cosmo0920 avatar croaky avatar dimbeni avatar fwininger avatar henrik avatar history avatar jdufresne avatar khoerodin avatar krzysztofjablonski avatar lsegal avatar mck9 avatar mike-burns avatar njakobsen avatar olleolleolle avatar qrush avatar ramirovarandas avatar swamp09 avatar technicalpickles avatar tmaier avatar tomhughes avatar unpublishedworks avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.