unpack/
unpack.rs

1use std::fs::File;
2use std::io::{Read, Write};
3
4fn main() -> Result<(), Box<dyn std::error::Error>> {
5    let path = std::env::args().nth(1)
6        .ok_or("Provide path to a TNEF file (winmail.dat)".to_string())?;
7    let mut f = File::open(path)?;
8    let mut buf = vec![];
9    f.read_to_end(&mut buf)?;
10
11    for a in tnef::read_attachments(&buf)? {
12        println!("\
13                Title: {:?}\nCreate date: {:?}\nModify date: {:?}\n\
14                Data len: {:?}\nMeta len: {:?}\n\
15                Transport filename: {:?}\nRendering data: {:?}\n\
16                Props len: {:?}\n\
17            ",
18            a.title,
19            a.create_date,
20            a.modify_date,
21            a.data.len(),
22            a.meta.map(|v| v.len()),
23            a.transport_filename,
24            a.rend_data,
25            a.props.len(),
26        );
27        File::create(a.title)?.write_all(a.data)?;
28    }
29    Ok(())
30}