Compare commits

...

26 Commits

Author SHA1 Message Date
6826cb60f8 Merge pull request 'Update Rust crate uuid to 1.18.1' (#11) from renovate/uuid-1.x into master
All checks were successful
continuous-integration/drone/push Build is passing
2025-09-05 00:21:30 +00:00
d9711bcb7e Update Rust crate uuid to 1.18.1
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2025-09-04 00:28:25 +00:00
970fcef06a Merge pull request 'Update Rust crate clap to 4.5.47' (#10) from renovate/clap-4.x into master
All checks were successful
continuous-integration/drone/push Build is passing
2025-09-04 00:28:22 +00:00
a54ea2939c Update Rust crate clap to 4.5.47
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2025-09-03 00:27:25 +00:00
bba7a07044 Merge pull request 'Update Rust crate tracing-subscriber to 0.3.20' (#9) from renovate/tracing-subscriber-0.x into master
All checks were successful
continuous-integration/drone/push Build is passing
2025-08-31 00:26:39 +00:00
0208bc8e96 Update Rust crate tracing-subscriber to 0.3.20
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2025-08-30 00:27:09 +00:00
eb72912272 Merge pull request 'Update Rust crate clap to 4.5.46' (#8) from renovate/clap-4.x into master
All checks were successful
continuous-integration/drone/push Build is passing
2025-08-28 00:27:52 +00:00
e84c681dbd Update Rust crate clap to 4.5.46
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2025-08-27 00:27:28 +00:00
0dfd0cea5d Merge pull request 'Update Rust crate clap to 4.5.45' (#7) from renovate/clap-4.x into master
All checks were successful
continuous-integration/drone/push Build is passing
2025-08-14 00:27:03 +00:00
e456f545ed Update Rust crate clap to 4.5.45
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2025-08-13 00:27:27 +00:00
5956d7c156 Merge pull request 'Update Rust crate uuid to 1.18.0' (#6) from renovate/uuid-1.x into master
All checks were successful
continuous-integration/drone/push Build is passing
2025-08-13 00:27:23 +00:00
4ba7b6df2e Update Rust crate uuid to 1.18.0
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2025-08-12 00:26:53 +00:00
625187b1ff Merge pull request 'Update Rust crate clap to 4.5.43' (#5) from renovate/clap-4.x into master
All checks were successful
continuous-integration/drone/push Build is passing
2025-08-08 00:15:01 +00:00
7ca02cfb8c Update Rust crate clap to 4.5.43
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2025-08-07 00:14:47 +00:00
dd56772532 Merge pull request 'Update Rust crate clap to 4.5.42' (#4) from renovate/clap-4.x into master
All checks were successful
continuous-integration/drone/push Build is passing
2025-08-01 00:18:18 +00:00
406584172f Update Rust crate clap to 4.5.42
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2025-07-31 00:14:12 +00:00
2ed332b027 Merge pull request 'Update Rust crate lettre to 0.11.18' (#3) from renovate/lettre-0.x into master
All checks were successful
continuous-integration/drone/push Build is passing
2025-07-30 00:13:36 +00:00
29102071c8 Update Rust crate lettre to 0.11.18
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2025-07-29 00:15:59 +00:00
7fc97673bd Merge pull request 'Update Rust crate clap to 4.5.41' (#2) from renovate/clap-4.x into master
All checks were successful
continuous-integration/drone/push Build is passing
2025-07-10 00:50:52 +00:00
e5fc436600 Update Rust crate clap to 4.5.41
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2025-07-10 00:15:57 +00:00
ba14783e11 Merge pull request 'Update Rust crate tracing to 0.1.41' (#1) from renovate/tracing-0.x into master
All checks were successful
continuous-integration/drone/push Build is passing
2025-07-09 13:03:13 +00:00
e2a74b896a Fix cargo clippy issue
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2025-07-09 13:02:37 +00:00
ff8770365c Update Rust crate tracing to 0.1.41
Some checks failed
continuous-integration/drone/pr Build is failing
continuous-integration/drone/push Build is failing
2025-07-05 00:08:59 +00:00
17611303f6 Can set message id
Some checks failed
continuous-integration/drone/push Build is failing
2025-07-04 14:52:45 +02:00
ffbc55b1b3 add message id to request 2025-07-04 14:48:55 +02:00
44c5ba7a0c Add logging
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2025-07-04 14:13:52 +02:00
3 changed files with 243 additions and 16 deletions

223
Cargo.lock generated
View File

@@ -112,6 +112,12 @@ version = "2.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967"
[[package]]
name = "bumpalo"
version = "3.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43"
[[package]] [[package]]
name = "cc" name = "cc"
version = "1.2.27" version = "1.2.27"
@@ -139,9 +145,9 @@ dependencies = [
[[package]] [[package]]
name = "clap" name = "clap"
version = "4.5.40" version = "4.5.47"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "40b6887a1d8685cebccf115538db5c0efe625ccac9696ad45c409d96566e910f" checksum = "7eac00902d9d136acd712710d71823fb8ac8004ca445a89e73a41d45aa712931"
dependencies = [ dependencies = [
"clap_builder", "clap_builder",
"clap_derive", "clap_derive",
@@ -149,9 +155,9 @@ dependencies = [
[[package]] [[package]]
name = "clap_builder" name = "clap_builder"
version = "4.5.40" version = "4.5.47"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e0c66c08ce9f0c698cbce5c0279d0bb6ac936d8674174fe48f736533b964f59e" checksum = "2ad9bbf750e73b5884fb8a211a9424a1906c1e156724260fdae972f31d70e1d6"
dependencies = [ dependencies = [
"anstream", "anstream",
"anstyle", "anstyle",
@@ -161,9 +167,9 @@ dependencies = [
[[package]] [[package]]
name = "clap_derive" name = "clap_derive"
version = "4.5.40" version = "4.5.47"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d2c7947ae4cc3d851207c1adb5b5e260ff0cca11446b1d6d1423788e442257ce" checksum = "bbfd7eae0b0f1a6e63d4b13c9c478de77c2eb546fba158ad50b4203dc24b9f9c"
dependencies = [ dependencies = [
"heck", "heck",
"proc-macro2", "proc-macro2",
@@ -475,10 +481,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf"
[[package]] [[package]]
name = "lettre" name = "js-sys"
version = "0.11.17" version = "0.3.77"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cb2a0354e9ece2fcdcf9fa53417f6de587230c0c248068eb058fa26c4a753179" checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f"
dependencies = [
"once_cell",
"wasm-bindgen",
]
[[package]]
name = "lazy_static"
version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
[[package]]
name = "lettre"
version = "0.11.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5cb54db6ff7a89efac87dba5baeac57bb9ccd726b49a9b6f21fb92b3966aaf56"
dependencies = [ dependencies = [
"base64", "base64",
"chumsky", "chumsky",
@@ -494,8 +516,9 @@ dependencies = [
"nom", "nom",
"percent-encoding", "percent-encoding",
"quoted_printable", "quoted_printable",
"socket2", "socket2 0.6.0",
"tokio", "tokio",
"tracing",
"url", "url",
] ]
@@ -529,6 +552,9 @@ version = "0.1.0"
dependencies = [ dependencies = [
"clap", "clap",
"lettre", "lettre",
"tracing",
"tracing-subscriber",
"uuid",
] ]
[[package]] [[package]]
@@ -589,6 +615,15 @@ dependencies = [
"memchr", "memchr",
] ]
[[package]]
name = "nu-ansi-term"
version = "0.50.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d4a28e057d01f97e61255210fcff094d74ed0466038633e95017f5beb68e4399"
dependencies = [
"windows-sys 0.52.0",
]
[[package]] [[package]]
name = "object" name = "object"
version = "0.36.7" version = "0.36.7"
@@ -745,6 +780,12 @@ dependencies = [
"windows-sys 0.59.0", "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]] [[package]]
name = "schannel" name = "schannel"
version = "0.1.27" version = "0.1.27"
@@ -797,6 +838,15 @@ dependencies = [
"syn", "syn",
] ]
[[package]]
name = "sharded-slab"
version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6"
dependencies = [
"lazy_static",
]
[[package]] [[package]]
name = "shlex" name = "shlex"
version = "1.3.0" version = "1.3.0"
@@ -825,6 +875,16 @@ dependencies = [
"windows-sys 0.52.0", "windows-sys 0.52.0",
] ]
[[package]]
name = "socket2"
version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807"
dependencies = [
"libc",
"windows-sys 0.59.0",
]
[[package]] [[package]]
name = "stable_deref_trait" name = "stable_deref_trait"
version = "1.2.0" version = "1.2.0"
@@ -885,6 +945,15 @@ dependencies = [
"windows-sys 0.59.0", "windows-sys 0.59.0",
] ]
[[package]]
name = "thread_local"
version = "1.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185"
dependencies = [
"cfg-if",
]
[[package]] [[package]]
name = "tinystr" name = "tinystr"
version = "0.8.1" version = "0.8.1"
@@ -907,10 +976,67 @@ dependencies = [
"mio", "mio",
"pin-project-lite", "pin-project-lite",
"slab", "slab",
"socket2", "socket2 0.5.10",
"windows-sys 0.52.0", "windows-sys 0.52.0",
] ]
[[package]]
name = "tracing"
version = "0.1.41"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0"
dependencies = [
"pin-project-lite",
"tracing-attributes",
"tracing-core",
]
[[package]]
name = "tracing-attributes"
version = "0.1.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "tracing-core"
version = "0.1.34"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678"
dependencies = [
"once_cell",
"valuable",
]
[[package]]
name = "tracing-log"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3"
dependencies = [
"log",
"once_cell",
"tracing-core",
]
[[package]]
name = "tracing-subscriber"
version = "0.3.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2054a14f5307d601f88daf0553e1cbf472acc4f2c51afab632431cdcd72124d5"
dependencies = [
"nu-ansi-term",
"sharded-slab",
"smallvec",
"thread_local",
"tracing-core",
"tracing-log",
]
[[package]] [[package]]
name = "unicode-ident" name = "unicode-ident"
version = "1.0.18" version = "1.0.18"
@@ -940,6 +1066,23 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
[[package]]
name = "uuid"
version = "1.18.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2"
dependencies = [
"getrandom",
"js-sys",
"wasm-bindgen",
]
[[package]]
name = "valuable"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65"
[[package]] [[package]]
name = "vcpkg" name = "vcpkg"
version = "0.2.15" version = "0.2.15"
@@ -967,6 +1110,64 @@ dependencies = [
"wit-bindgen-rt", "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]] [[package]]
name = "windows-link" name = "windows-link"
version = "0.1.3" version = "0.1.3"

View File

@@ -4,5 +4,8 @@ version = "0.1.0"
edition = "2024" edition = "2024"
[dependencies] [dependencies]
clap = { version = "4.5.40", features = ["derive"] } clap = { version = "4.5.47", features = ["derive"] }
lettre = "0.11.17" lettre = { version = "0.11.18", features = ["tracing"] }
tracing = "0.1.41"
tracing-subscriber = "0.3.20"
uuid = { version = "1.18.1", features = ["v4"] }

View File

@@ -1,9 +1,11 @@
use clap::Parser; use clap::Parser;
use lettre::message::header::{ContentType, MessageId};
use lettre::message::Mailbox; use lettre::message::Mailbox;
use lettre::message::header::ContentType;
use lettre::transport::smtp::authentication::Credentials; use lettre::transport::smtp::authentication::Credentials;
use lettre::transport::smtp::extension::ClientId; use lettre::transport::smtp::extension::ClientId;
use lettre::{Message, SmtpTransport, Transport}; use lettre::{Message, SmtpTransport, Transport};
use tracing::Level;
use tracing_subscriber::FmtSubscriber;
/// Simple mail sender /// Simple mail sender
#[derive(Parser, Debug)] #[derive(Parser, Debug)]
@@ -64,11 +66,25 @@ struct Args {
/// Relay name /// Relay name
#[arg(long, default_value = "my-computer.com")] #[arg(long, default_value = "my-computer.com")]
smtp_relay_name: String, smtp_relay_name: String,
/// Include message id
#[arg(long)]
message_id: bool,
} }
fn main() { fn main() {
let args = Args::parse(); let args = Args::parse();
// a builder for `FmtSubscriber`.
let subscriber = FmtSubscriber::builder()
// all spans/events with a level higher than TRACE (e.g, debug, info, warn, etc.)
// will be written to stdout.
.with_max_level(Level::TRACE)
// completes the builder.
.finish();
tracing::subscriber::set_global_default(subscriber).expect("setting default subscriber failed");
let mut builder = Message::builder(); let mut builder = Message::builder();
builder = builder.from(Mailbox::new( builder = builder.from(Mailbox::new(
args.from_name, args.from_name,
@@ -81,6 +97,14 @@ fn main() {
)); ));
} }
if args.message_id {
builder = builder.header(MessageId::from(format!(
"<{}@{}>",
uuid::Uuid::new_v4(),
args.from_mail.rsplit_once('@').unwrap().1
)));
}
builder = builder builder = builder
.to(Mailbox::new( .to(Mailbox::new(
args.to_name.clone(), args.to_name.clone(),
@@ -118,7 +142,6 @@ fn main() {
} }
} }
#[cfg(test)] #[cfg(test)]
mod test { mod test {
use crate::Args; use crate::Args;
@@ -127,4 +150,4 @@ mod test {
use clap::CommandFactory; use clap::CommandFactory;
Args::command().debug_assert() Args::command().debug_assert()
} }
} }