Search

Lib.rs

› Email
#address-parser

emailaddress

Simple email address type and parser

by Paul Woolcock

  • Install
  • API reference
  • GitHub (pwoolcoc)

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

#521 in Email

Download history 25/week @ 2026-02-05 7/week @ 2026-03-05 310/week @ 2026-04-09

310 downloads per month
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

~245KB

  • ser? serde 0.8.19
  • ser? serde_derive 0.8.19
See also: mail-parser, email_address, mail-builder, lettre, imap, pgp, mrml, async-imap, zxcvbn, imap-proto, check-if-email-exists

Lib.rs is an unofficial list of Rust/Cargo crates, created by kornelski. It contains data from multiple sources, including heuristics, and manually curated data. Content of this page is not necessarily endorsed by the authors of the crate. This site is not affiliated with nor endorsed by the Rust Project. If something is missing or incorrect, please file a bug.