Expand description

Relatively näive 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 to parse even the worst garbage in anyone’s inbox. Limited testing with real world data has been, but the grammar that forms the basis for this library probably still needs work to catch more edge cases.

Example

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));

Modules

Structs

A contact with at least an email address
A string that we couldn’t parse into an EmailContact but implements the Contactish trait regardless
A group with a name and a Vec of Contacts

Enums

All forms which email headers like To, From, Cc, etc. can take
Either an EmailContact we could successfully parse or a GarbageContact we didn’t want to throw away

Traits

Unified interface for all contact types
Check if all fields are the same rather than just a subset (“deep equals”)

Functions

Get an AddressList from a string
Parse only a single Contact, ignore the rest