Crate email_address_list

Source
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§

error

Structs§

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

Enums§

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

Traits§

Contactish
Unified interface for all contact types
Contactsish
For everything that has contacts
DeepEq
Check if all fields are the same rather than just a subset (“deep equals”)

Functions§

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