This is a simple gem for Ruby that simplifies validating email addresses. It conforms with RFC2822.
Here comes a quick code sample. Currently no docs.
require 'rfc822' # To test if whole string is an email... ugly way # (returns 0 on success, nil on failure): "email@example.com".dup.force_encoding("BINARY") =~ RFC822::EMAIL_REGEXP_WHOLE # or nice one (returns true/false): "firstname.lastname@example.org".is_email? # To test if string contains an email... ugly way # (returns 0 on success, nil on failure): "demo email@example.comFooBar".dup.force_encoding("BINARY") =~ RFC822::EMAIL_REGEXP_PART # or nice one (returns true/false): "demo firstname.lastname@example.orgFooBar".contains_email? # To scan for emails within a string... ugly way # (returns an array): "something email@example.com xyz".dup.force_encoding("BINARY").scan(RFC822::EMAIL_REGEXP_PART) # or nice one (also returns an array): "something firstname.lastname@example.org xyz".scan_for_emails
If you omit `.dup.force_encoding(“BINARY”)` part, you can run into exceptions if someone passes non-ASCII email (see github.com/mspanc/rfc822/issues/3).
Code was tested with ruby-1.8.7-p334 [ i386 ] and ruby-1.9.2-p180 [ i386 ] under RVM.
The gems are hosted at Rubygems.org. Make sure you're using the latest version of rubygems:
$ gem update --system
Then you can install the gem as follows:
$ gem install rfc822
Add to your Gemfile:
and then type:
From the GitHub source
The source code is available at github.com/saepia/rfc822. You can either clone the git repository or download a tarball or zip file. Once you have the source, you can unpack it and use from wherever you downloaded.
Fixed bug that caused to change encoding of string passed to the methods (thanks to Artur Trzop)
Fixed regression introduced in 0.1.3 that caused EMAIL_REGEXP_WHOLE to stop working properly.
Updated regular expressions to use A and z instead of ^ and $ operators.
Fixed description in the gem description
Added compatibility with Ruby 1.9
Added String#is_email?, String#contains_email? and String#scan_for_emails methods