4 releases (breaking)

0.9.0 Jul 8, 2019
0.8.0 Jun 14, 2019
0.7.0 May 10, 2019
0.6.0 Apr 12, 2019

#23 in Email

Download history 14/week @ 2019-04-08 13/week @ 2019-04-15 22/week @ 2019-04-22 16/week @ 2019-04-29 24/week @ 2019-05-06 25/week @ 2019-05-13 20/week @ 2019-05-20 19/week @ 2019-05-27 76/week @ 2019-06-03 50/week @ 2019-06-10 30/week @ 2019-06-17 42/week @ 2019-06-24 199/week @ 2019-07-01

187 downloads per month
Used in 2 crates (1 directly)

GPL-3.0 license

107KB
2.5K SLoC

An RFC 2822 parser.

Currently, this crate only recognizes the RFC 2822 name-addr and addr-spec productions, i.e., things of the form:

Name (Comment) <email@example.org>

and

email@example.org

Although the above appear simple to parse, RFC 2822's whitespace and comment rules are rather complex. This crate implements the whole grammar.

As an extension, in addition to ASCII, we also recognize all UTF-8 code points. NUL, controls, and specials retain their meaning as defined in RFC 2822. Other UTF-8 code points are considered to be text like a.

Further, we also allow dots (.) and at symbols (@) in the atom production. That is, the atom production is extended from:

atom            =       [CFWS] 1*atext [CFWS]

to:

atom               =       [CFWS] 1*atext_or_dot_or_at [CFWS]
atext_or_dot_or_at =       atext | DOT | AT

And, as such:

Professor Pippy P. Poopypants <pippy@jerome-horwitz.k12.oh.us>

is recognized as a name-addr even though RFC 2822 strictly requires that the display-name be quoted like:

"Professor Pippy P. Poopypants" <pippy@jerome-horwitz.k12.oh.us>

Likewise,

foo@bar.com <foo@bar.com>

is recognized as a name-addr even though the @ should be quoted.

This crate does not (yet) implement the new RFC 5322.

Dependencies

~1MB
~17K SLoC