email-lib 0.27.0

Cross-platform, asynchronous Rust library to manage emails
Documentation
use chrono::{FixedOffset, TimeZone};

pub fn from_mail_parser_to_chrono_datetime(
    dt: &mail_parser::DateTime,
) -> Option<chrono::DateTime<FixedOffset>> {
    let tz_secs = (dt.tz_hour as i32) * 3600 + (dt.tz_minute as i32) * 60;
    let tz_sign = if dt.tz_before_gmt { -1 } else { 1 };

    FixedOffset::east_opt(tz_sign * tz_secs)?
        .with_ymd_and_hms(
            dt.year as i32,
            dt.month as u32,
            dt.day as u32,
            dt.hour as u32,
            dt.minute as u32,
            dt.second as u32,
        )
        .earliest()
}