#email-address #parser #rfc-5322 #rfc-6532

email-address-parser

An RFC 5322, and RFC 6532 compliant email address parser

17 releases (5 stable)

2.0.0 May 31, 2023
2.0.0-rc3 Dec 26, 2022
2.0.0-rc2 Aug 27, 2022
2.0.0-rc1 Oct 11, 2021
0.3.0-rc2 Aug 30, 2020

#29 in Email

Download history 3034/week @ 2023-08-04 1732/week @ 2023-08-11 1820/week @ 2023-08-18 1020/week @ 2023-08-25 1037/week @ 2023-09-01 1657/week @ 2023-09-08 1764/week @ 2023-09-15 3004/week @ 2023-09-22 2507/week @ 2023-09-29 2136/week @ 2023-10-06 2355/week @ 2023-10-13 2374/week @ 2023-10-20 2167/week @ 2023-10-27 4251/week @ 2023-11-03 5270/week @ 2023-11-10 1995/week @ 2023-11-17

13,918 downloads per month
Used in 20 crates (8 directly)

MIT license

27KB
353 lines

email-address-parser

An RFC 5322, and RFC 6532 compliant email address parser.

You can parse string for email address like this.

use email_address_parser::EmailAddress;

let email = EmailAddress::parse("foo@bar.com", Some(true)).unwrap();
assert_eq!(email.get_local_part(), "foo");
assert_eq!(email.get_domain(), "bar.com");

For an input string that is an invalid email address, it returns None.

use email_address_parser::EmailAddress;

assert!(EmailAddress::parse("test@-iana.org", Some(true)).is_none());

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.

let email = EmailAddress::parse("\u{0d}\u{0a} \u{0d}\u{0a} test@iana.org", None);
assert!(email.is_some());

Unicode support

In compliance to RFC 6532, it supports parsing, validating, and instantiating email addresses with Unicode characters.

assert!(format!("{}", EmailAddress.new("foö", "bücher.de")) == "foö@bücher.de");
assert!(format!("{}", EmailAddress.parse("foö@bücher.de")) == "foö@bücher.de");
assert!(EmailAddress.isValid("foö@bücher.de"));

Dependencies

~2.2–3MB
~62K SLoC