add message id to request

This commit is contained in:
2025-07-04 14:48:55 +02:00
parent 44c5ba7a0c
commit ffbc55b1b3
3 changed files with 109 additions and 7 deletions

92
Cargo.lock generated
View File

@ -112,6 +112,12 @@ version = "2.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967"
[[package]]
name = "bumpalo"
version = "3.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43"
[[package]]
name = "cc"
version = "1.2.27"
@ -474,6 +480,16 @@ version = "1.70.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf"
[[package]]
name = "js-sys"
version = "0.3.77"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f"
dependencies = [
"once_cell",
"wasm-bindgen",
]
[[package]]
name = "lazy_static"
version = "1.5.0"
@ -538,6 +554,7 @@ dependencies = [
"lettre",
"tracing",
"tracing-subscriber",
"uuid",
]
[[package]]
@ -770,6 +787,12 @@ dependencies = [
"windows-sys 0.59.0",
]
[[package]]
name = "rustversion"
version = "1.0.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d"
[[package]]
name = "schannel"
version = "0.1.27"
@ -1040,6 +1063,17 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
[[package]]
name = "uuid"
version = "1.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3cf4199d1e5d15ddd86a694e4d0dffa9c323ce759fea589f00fef9d81cc1931d"
dependencies = [
"getrandom",
"js-sys",
"wasm-bindgen",
]
[[package]]
name = "valuable"
version = "0.1.1"
@ -1073,6 +1107,64 @@ dependencies = [
"wit-bindgen-rt",
]
[[package]]
name = "wasm-bindgen"
version = "0.2.100"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5"
dependencies = [
"cfg-if",
"once_cell",
"rustversion",
"wasm-bindgen-macro",
]
[[package]]
name = "wasm-bindgen-backend"
version = "0.2.100"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6"
dependencies = [
"bumpalo",
"log",
"proc-macro2",
"quote",
"syn",
"wasm-bindgen-shared",
]
[[package]]
name = "wasm-bindgen-macro"
version = "0.2.100"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407"
dependencies = [
"quote",
"wasm-bindgen-macro-support",
]
[[package]]
name = "wasm-bindgen-macro-support"
version = "0.2.100"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de"
dependencies = [
"proc-macro2",
"quote",
"syn",
"wasm-bindgen-backend",
"wasm-bindgen-shared",
]
[[package]]
name = "wasm-bindgen-shared"
version = "0.2.100"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d"
dependencies = [
"unicode-ident",
]
[[package]]
name = "winapi"
version = "0.3.9"

View File

@ -7,4 +7,5 @@ edition = "2024"
clap = { version = "4.5.40", features = ["derive"] }
lettre = { version = "0.11.17", features = ["tracing"] }
tracing = "0.1"
tracing-subscriber = "0.3.19"
tracing-subscriber = "0.3.19"
uuid = { version = "1.17.0", features = ["v4"] }

View File

@ -1,6 +1,6 @@
use clap::Parser;
use lettre::message::header::{ContentType, MessageId};
use lettre::message::Mailbox;
use lettre::message::header::ContentType;
use lettre::transport::smtp::authentication::Credentials;
use lettre::transport::smtp::extension::ClientId;
use lettre::{Message, SmtpTransport, Transport};
@ -66,6 +66,10 @@ struct Args {
/// Relay name
#[arg(long, default_value = "my-computer.com")]
smtp_relay_name: String,
/// Include message id
#[arg(long)]
message_id: bool,
}
fn main() {
@ -79,9 +83,7 @@ fn main() {
// completes the builder.
.finish();
tracing::subscriber::set_global_default(subscriber)
.expect("setting default subscriber failed");
tracing::subscriber::set_global_default(subscriber).expect("setting default subscriber failed");
let mut builder = Message::builder();
builder = builder.from(Mailbox::new(
@ -95,6 +97,14 @@ fn main() {
));
}
if args.message_id {
builder = builder.header(MessageId::from(format!(
"{}@{}",
uuid::Uuid::new_v4().to_string(),
args.from_mail.rsplit_once('@').unwrap().1
)));
}
builder = builder
.to(Mailbox::new(
args.to_name.clone(),
@ -132,7 +142,6 @@ fn main() {
}
}
#[cfg(test)]
mod test {
use crate::Args;
@ -141,4 +150,4 @@ mod test {
use clap::CommandFactory;
Args::command().debug_assert()
}
}
}