examples/mail-sender/Cargo.toml
[package]
name = "mail-sender"
version = "0.1.0"
edition = "2024"
[dependencies]
anyhow = "1.0.100"
clap = { version = "4.5.53", features = ["derive"] }
lettre = { version = "0.11.19", features = ["file-transport", "sendmail-transport"] }
examples/mail-sender/src/main.rs
use clap::Parser;
use lettre::{FileTransport, Message, SendmailTransport, Transport, message::header::ContentType};
#[derive(Parser)]
struct Cli {
#[arg(long)]
from: String,
#[arg(long)]
to: String,
#[arg(long)]
subject: String,
#[arg(long)]
dir: Option<String>,
}
fn main() {
let args = Cli::parse();
let email = Message::builder()
.from(args.from.parse().unwrap())
.to(args.to.parse().unwrap())
.subject(args.subject)
.header(ContentType::TEXT_PLAIN)
.body(String::from("Body"))
.unwrap();
match args.dir {
Some(dirname) => {
let sender = FileTransport::new(dirname);
let filename = sender.send(&email).unwrap();
println!("{filename}.eml");
}
None => {
let sender = SendmailTransport::new();
sender.send(&email).unwrap();
}
}
}