email_address_parser/lib.rs
1//! An [RFC 5322](https://tools.ietf.org/html/rfc5322) compliant email address parser.
2//!
3//! # Examples
4//! You can parse string for email address like this.
5//! ```
6//! use email_address_parser::EmailAddress;
7//!
8//! let email = EmailAddress::parse("foo@bar.com", None).unwrap();
9//! assert_eq!(email.get_local_part(), "foo");
10//! assert_eq!(email.get_domain(), "bar.com");
11//! ```
12//!
13//! For an input string that is an invalid email address, it returns `None`.
14//! ```
15//! use email_address_parser::EmailAddress;
16//!
17//! assert!(EmailAddress::parse("test@-iana.org", None).is_none());
18//! ```
19//!
20//! To parse an email address with obsolete parts (as per RFC 5322) in it, pass `None` as the second argument to have non-strict parsing.
21//! ```
22//! use email_address_parser::*;
23//!
24//! let email = EmailAddress::parse("\u{0d}\u{0a} \u{0d}\u{0a} test@iana.org", Some(ParsingOptions::new(true)));
25//! assert!(email.is_some());
26//! ```
27//!
28//! ## Unicode support
29//! In compliance to [RFC 6532](https://tools.ietf.org/html/rfc6532), it supports parsing, validating, and instantiating email addresses with Unicode characters.
30//!
31//! ```rust
32//! use email_address_parser::*;
33//!
34//! assert!(format!("{}", EmailAddress::new("foö", "bücher.de", None).unwrap()) == "foö@bücher.de");
35//! assert!(format!("{}", EmailAddress::parse("foö@bücher.de", None).unwrap()) == "foö@bücher.de");
36//! assert!(EmailAddress::is_valid("foö@bücher.de", None));
37//! ```
38
39#[macro_use]
40extern crate pest_derive;
41
42mod email_address;
43#[doc(inline)]
44pub use self::email_address::EmailAddress;
45pub use self::email_address::ParsingOptions;