#[cfg(all(feature = "file-transport", feature = "builder"))] fn default_date() -> std::time::SystemTime { use std::time::{Duration, SystemTime}; // Tue, 15 Nov 1994 08:12:31 GMT SystemTime::UNIX_EPOCH + Duration::from_secs(784887151) } #[cfg(test)] #[cfg(all(feature = "file-transport", feature = "builder"))] mod sync { use std::{ env::temp_dir, fs::{read_to_string, remove_file}, }; use lettre::{FileTransport, Message, Transport}; use crate::default_date; #[test] fn file_transport() { let sender = FileTransport::new(temp_dir()); let email = Message::builder() .from("NoBody ".parse().unwrap()) .reply_to("Yuin ".parse().unwrap()) .to("Hei ".parse().unwrap()) .subject("Happy new year") .date(default_date()) .body(String::from("Be happy!")) .unwrap(); let result = sender.send(&email); let id = result.unwrap(); let eml_file = temp_dir().join(format!("{id}.eml")); let eml = read_to_string(&eml_file).unwrap(); assert_eq!( eml, concat!( "From: NoBody \r\n", "Reply-To: Yuin \r\n", "To: Hei \r\n", "Subject: Happy new year\r\n", "Date: Tue, 15 Nov 1994 08:12:31 +0000\r\n", "Content-Transfer-Encoding: 7bit\r\n", "\r\n", "Be happy!" ) ); remove_file(eml_file).unwrap(); } #[test] #[cfg(feature = "file-transport-envelope")] fn file_transport_with_envelope() { let sender = FileTransport::with_envelope(temp_dir()); let email = Message::builder() .from("NoBody ".parse().unwrap()) .reply_to("Yuin ".parse().unwrap()) .to("Hei ".parse().unwrap()) .subject("Happy new year") .date(default_date()) .body(String::from("Be happy!")) .unwrap(); let result = sender.send(&email); let id = result.unwrap(); let eml_file = temp_dir().join(format!("{id}.eml")); let eml = read_to_string(&eml_file).unwrap(); let json_file = temp_dir().join(format!("{id}.json")); let json = read_to_string(&json_file).unwrap(); assert_eq!( eml, concat!( "From: NoBody \r\n", "Reply-To: Yuin \r\n", "To: Hei \r\n", "Subject: Happy new year\r\n", "Date: Tue, 15 Nov 1994 08:12:31 +0000\r\n", "Content-Transfer-Encoding: 7bit\r\n", "\r\n", "Be happy!" ) ); assert_eq!( json, "{\"forward_path\":[\"hei@domain.tld\"],\"reverse_path\":\"nobody@domain.tld\"}" ); let (e, m) = sender.read(&id).unwrap(); assert_eq!(&e, email.envelope()); assert_eq!(m, email.formatted()); remove_file(eml_file).unwrap(); remove_file(json_file).unwrap(); } } #[cfg(test)] #[cfg(all(feature = "file-transport", feature = "builder", feature = "tokio1"))] mod tokio_1 { use std::{ env::temp_dir, fs::{read_to_string, remove_file}, }; use lettre::{AsyncFileTransport, AsyncTransport, Message, Tokio1Executor}; use tokio1_crate as tokio; use crate::default_date; #[tokio::test] async fn file_transport_tokio1() { let sender = AsyncFileTransport::::new(temp_dir()); let email = Message::builder() .from("NoBody ".parse().unwrap()) .reply_to("Yuin ".parse().unwrap()) .to("Hei ".parse().unwrap()) .subject("Happy new year") .date(default_date()) .body(String::from("Be happy!")) .unwrap(); let result = sender.send(email).await; let id = result.unwrap(); let eml_file = temp_dir().join(format!("{id}.eml")); let eml = read_to_string(&eml_file).unwrap(); assert_eq!( eml, concat!( "From: NoBody \r\n", "Reply-To: Yuin \r\n", "To: Hei \r\n", "Subject: Happy new year\r\n", "Date: Tue, 15 Nov 1994 08:12:31 +0000\r\n", "Content-Transfer-Encoding: 7bit\r\n", "\r\n", "Be happy!" ) ); remove_file(eml_file).unwrap(); } } #[cfg(test)] #[cfg(all( feature = "file-transport", feature = "builder", feature = "async-std1" ))] mod asyncstd_1 { use std::{ env::temp_dir, fs::{read_to_string, remove_file}, }; use lettre::{AsyncFileTransport, AsyncStd1Executor, AsyncTransport, Message}; use crate::default_date; #[async_std::test] async fn file_transport_asyncstd1() { let sender = AsyncFileTransport::::new(temp_dir()); let email = Message::builder() .from("NoBody ".parse().unwrap()) .reply_to("Yuin ".parse().unwrap()) .to("Hei ".parse().unwrap()) .subject("Happy new year") .date(default_date()) .body(String::from("Be happy!")) .unwrap(); let result = sender.send(email).await; let id = result.unwrap(); let eml_file = temp_dir().join(format!("{id}.eml")); let eml = read_to_string(&eml_file).unwrap(); assert_eq!( eml, concat!( "From: NoBody \r\n", "Reply-To: Yuin \r\n", "To: Hei \r\n", "Subject: Happy new year\r\n", "Date: Tue, 15 Nov 1994 08:12:31 +0000\r\n", "Content-Transfer-Encoding: 7bit\r\n", "\r\n", "Be happy!" ) ); remove_file(eml_file).unwrap(); } }