vsmtp-mail-parser 2.2.1

Next-gen MTA. Secured, Faster and Greener
Documentation
use crate::message::mail::{BodyType, Mail, MailHeaders};
use crate::MailMimeParser;

const MAIL: &str = include_str!("../../mail/rfc5322/A.1.2.eml");

#[test]
fn types_mailboxes() {
    let parsed = crate::MailParser::parse_sync(
        &mut MailMimeParser::default(),
        MAIL.lines()
            .map(|l| l.as_bytes().to_vec())
            .collect::<Vec<_>>(),
    )
    .unwrap()
    .unwrap_right();
    pretty_assertions::assert_eq!(
        parsed,
        Mail {
            headers: MailHeaders(
                [
                    ("from", "\"Joe Q. Public\" <john.q.public@example.com>"),
                    (
                        "to",
                        "Mary Smith <mary@x.test>, jdoe@example.org, Who? <one@y.test>"
                    ),
                    (
                        "cc",
                        "<boss@nil.test>, \"Giant; \\\"Big\\\" Box\" <sysservices@example.net>"
                    ),
                    ("date", "Tue, 1 Jul 2003 10:52:37 +0200"),
                    ("message-id", "<5678.21-Nov-1997@example.com>"),
                ]
                .into_iter()
                .map(|(k, v)| (k.to_string(), v.to_string()))
                .collect::<Vec<_>>()
            ),
            body: BodyType::Regular(
                vec!["Hi everyone."]
                    .into_iter()
                    .map(str::to_string)
                    .collect::<_>()
            )
        }
    );
    pretty_assertions::assert_eq!(parsed.to_string(), MAIL.replace('\n', "\r\n"));
}