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
- Maciej Walusiak (https://github.com/Rabsztok)
- Francesco Gnarra (https://github.com/francescognarra)
- Stefan Wienert (https://github.com/zealot128)
- https://github.com/mzabaljauregui
- Ethan Czahor (https://github.com/czahor)
Contributing yourself
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request