Helper validation utility for checking if given email address is real.
Ruby
Clone or download
Kamil Ciemniewski
Kamil Ciemniewski Bumped the version number
Latest commit 9ac6bc7 Sep 22, 2015

README.md

Gem Version

Email Verifier

Helper validation utility for checking if given email address is real.

Many times as developers we were putting validation statements for checking email addresses format. This gem will complete your existing setups with validator that actually connects with a given mail server and asks if the address in question exists for real.

It also:

  • supports Heroku
  • supports localization

Installation

Add this line to your application's Gemfile:

# place it at the bottom of rails/activesupport if you're working with them.
gem 'email_verifier'

And then execute:

$ bundle

Or install it yourself as:

$ gem install email_verifier

Usage

To get info about realness of given email address, email_verifier connects with a mail server that email's domain points to and pretends to send an email. Some smtp servers will not allow you to do this if you will not present yourself as a real user.

First thing you need to set up is placing something like this either in initializer or in application.rb file:

EmailVerifier.config do |config|
  config.verifier_email = "realname@realdomain.com"
end

Then just put this in your model e. g:

validates_email_realness_of :email

Or - if you'd like to use it outside of your models:

EmailVerifier.check(youremail)

This method will return true or false, or will throw an exception with nicely detailed info about what's wrong.

Important: problems when using locally

When you're trying to use it from an IP that a server either cannot reach or trust (in any way) - then it returns 421 service not available (connection refused, too many connections) instead of letting you connect. Because of this you should most probably always be using it on a machine that the other SMTP server can reach.

Disabling on Test

If you are using Rails in test environment, the check will always succeed, so that your CI servers will not try to contact SMTP servers. You can change that behavior in the configuration block:

EmailVerifier.config do |config|
  config.test_mode = Rails.env.test?
end

Customizing messages

Add these lines to your locale file in config/locales:

it:
  errors:
    messages:
      email_verifier:
        email_not_real: must point to a real mail account
        out_of_mail_server: appears to point to dead mail server
        no_mail_server: appears to point to domain which doesn't handle e-mail
        failure: could not be checked if is real
        exception: could not be sent

Credits

Email Verifier is maintained and funded by the End Point Corporation

Please send questions to kamil@endpoint.com

Contributors

Contributing yourself

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request