Skip to content

Simple Pest based parser for E-Mail headers like From, To, Cc, Bcc, etc. (Mirror - report issues to Repo hosted on Codeberg)

License

Notifications You must be signed in to change notification settings

eaon/email-address-list

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

email-address-list

Crate version Documentation License

Relatively naïve Pest based parser, picking out "contacts" from "email address lists" found in headers such as from, to, cc, etc.

This library aims to be practical rather than "correct". It is (potentially excessively) permissive in parsing even the worst garbage in everyone's inbox. Limited testing with real world data was done, but the grammar probably still needs work to catch even more edge cases.

0.0.x releases may contain bugfixes and features, 0.x.0 might break compatibility.

Examples

RFC compliant header:

use email_address_list::*;

let manual: AddressList = vec![
    Contact::new("ríomhphost@example.org").set_name("Túsainm Sloinne"),
    Contact::new("sampla@example.org")
].into();

let result = parse_address_list(
    "Túsainm Sloinne <ríomhphost@example.org>, sampla@example.org"
).unwrap();

assert!(result.deep_eq(&manual));

Non RFC compliant header:

let manual: AddressList = vec![
    Contact::new("enaslov@example.org").set_name("Ime Priimek"),
    Contact::new("primer@example.org"),
    Contact::new("nepravilno.oblikovan@example.org")
        .set_name("Oblikovan, Nepravilno"),
    Contact::new("napačno.oblikovan@example.org"),
].into();

let result = parse_address_list(
    concat!(
        r#""Ime Priimek" <enaslov@example.org;primer@example.org>, "#,
        "Oblikovan, Nepravilno <nepravilno.oblikovan@example.org,>>, ",
        "<'napačno.oblikovan@example.org'>",
    )
).unwrap();

assert!(result.deep_eq(&manual));

If you find examples of email-address-list failing, either by omitting addresses or supplying wrong addresses, please share them with the author.

For further information, please see the documentation.

Thanks

About

Simple Pest based parser for E-Mail headers like From, To, Cc, Bcc, etc. (Mirror - report issues to Repo hosted on Codeberg)

Topics

Resources

License

Stars

Watchers

Forks

Languages