#parser #address

emailaddress

Simple email address type and parser

8 releases (4 breaking)

Uses old Rust 2015

0.4.0 Dec 7, 2016
0.3.1 Oct 17, 2016
0.3.0 Jun 2, 2016
0.2.1 Oct 6, 2015
0.0.1 Nov 20, 2014

#273 in Email


Used in tokio-smtp

MIT license

6KB
97 lines

Email Address type for Rust

Build Status

This crate implements email address parsing for Rust, as well as an EmailAddress type, so you can stop stringly-typing your email addresses.

use emailaddress::EmailAddress;

fn main() {
    let email = EmailAddress::new("someone@example.com").unwrap();
    assert_eq!(&email.local, "someone"); 
    assert_eq!(&email.domain, "example.com");
}

// or with from_str:

use emailaddress::EmailAddress;

fn main() {
  let email = from_str::<EmailAddress>("someone@example.com").unwrap();
  assert_eq!(
    email,
    EmailAddress {
        local: "someone".to_string(),
        domain: "example.com".to_string()
    }
  );
}

Parsing

There are (erm..."will be") 3 different parsing algorithms. "simple", "rfc5322" and "rfc6531". Currently only "simple" is fully implemented.

Simple parsing

The "simple" parsing algorithm is this:

  • take the last occurrence of the '@' symbol
  • everything to the right of it is the domain part
  • everything to the left of it is the local port

"WHAT??!!"

Yes, that's it. Not really a parser. Not much of an algorithm. But for reasons why you would want to use it, see http://girders.org/blog/2013/01/31/dont-rfc-validate-email-addresses/ or just google/duckduckgo/startpage for "email address RFC".

Dependencies

~0–265KB