60 lines
1.6 KiB
Rust
60 lines
1.6 KiB
Rust
#[cfg(all(test, feature = "smtp-transport", feature = "pool"))]
|
|
mod sync {
|
|
use std::{sync::mpsc, thread};
|
|
|
|
use lettre::{address::Envelope, SmtpTransport, Transport};
|
|
|
|
fn envelope() -> Envelope {
|
|
Envelope::new(
|
|
Some("user@localhost".parse().unwrap()),
|
|
vec!["root@localhost".parse().unwrap()],
|
|
)
|
|
.unwrap()
|
|
}
|
|
|
|
#[test]
|
|
fn send_one() {
|
|
let mailer = SmtpTransport::builder_dangerous("127.0.0.1")
|
|
.port(2525)
|
|
.build();
|
|
|
|
let result = mailer.send_raw(&envelope(), b"test");
|
|
assert!(result.is_ok());
|
|
}
|
|
|
|
#[test]
|
|
fn send_from_thread() {
|
|
let mailer = SmtpTransport::builder_dangerous("127.0.0.1")
|
|
.port(2525)
|
|
.build();
|
|
|
|
let (s1, r1) = mpsc::channel();
|
|
let (s2, r2) = mpsc::channel();
|
|
|
|
let mailer1 = mailer.clone();
|
|
let t1 = thread::spawn(move || {
|
|
s1.send(()).unwrap();
|
|
r2.recv().unwrap();
|
|
mailer1
|
|
.send_raw(&envelope(), b"test1")
|
|
.expect("Send failed from thread 1");
|
|
});
|
|
|
|
let mailer2 = mailer.clone();
|
|
let t2 = thread::spawn(move || {
|
|
s2.send(()).unwrap();
|
|
r1.recv().unwrap();
|
|
mailer2
|
|
.send_raw(&envelope(), b"test2")
|
|
.expect("Send failed from thread 2");
|
|
});
|
|
|
|
t1.join().unwrap();
|
|
t2.join().unwrap();
|
|
|
|
mailer
|
|
.send_raw(&envelope(), b"test")
|
|
.expect("Send failed from main thread");
|
|
}
|
|
}
|