/validates_email_veracity_of

A plugin to validate submitted emails for format, which can also check that the domain exists.

Primary LanguageRubyMIT LicenseMIT

Validates Email Veracity Of

Author

Carsten Nielsen (carsten.nielsen@savvica.com)

License

MIT

Type

Rails Validation Plugin

Validates the form of an email address and verifies it’s domain by checking if there are any mail exchange or address servers associated with it.

Options

  • message

    • Changes the default error message.

  • domain_check

    • Skips server lookup unless true.

  • timeout

    • Time (in seconds) before the domain lookup is skipped. Default is 2.

  • fail_on_timeout

    • Causes validation to fail if a timeout occurs.

  • timeout_message

    • Changes the default timeout error message.

  • mx_only

    • When set, only mail exchange servers (MX) are looked up and the address server (A) lookup is skipped.

  • invalid_domains

    • An array of domain names that are not to be used. Useful for stuff like dodgeit.com and other services.

  • invalid_domain_message

    • Changes the default invalid domain error message.

Examples

  • validates_email_veracity_of :email, :message => 'is not correct.'

    • Changes the default error message from ‘is invalid.’ to ‘is not correct.’

  • validates_email_veracity_of :email, :domain_check => false

    • Domain lookup is skipped.

  • validates_email_veracity_of :email, :timeout => 0.5

    • Causes the domain lookup to timeout if it does not complete within half a second.

  • validates_email_veracity_of :email, :fail_on_timeout => true, :timeout_message => 'is invalid.'

    • Causes the validation to fail on timeout and changes the error message to ‘is invalid.’ to obfuscate it.

  • validates_email_veracity_of :email, :mx_only => true

    • The validator will only check the domain for mail exchange (MX) servers, ignoring address servers (A) records.

  • validates_email_veracity_of :email, :invalid_domains => %w[dodgeit.com harvard.edu]

    • Any email addresses @dodgeit.com or @harvard.edu will be rejected.

Notes

  • You will need to be connected to the internet to utilize the remote features of the plugin and to properly run the tests.

  • To run the tests type rake test in the console from the plugin’s root directory.

  • The Resolv library has been known to screw up internally with a nil.include? error if your domain resolver is ill-configured or out of service.