commit 7802c66670c94fb7c8d7add4760facc9cc532087 from: witcher date: Sat Aug 13 20:54:44 2022 UTC Experimental support for TLS when sending mail commit - d8e36cdaa791572f8e9abe232e1b7dbedc60ac91 commit + 7802c66670c94fb7c8d7add4760facc9cc532087 blob - f0758f37b05c45fe7aa8e87c34f6145281fd2dd5 blob + 22aa2eeb384ea1a21c61a4ac615f9becc65dd2ef --- src/main.rs +++ src/main.rs @@ -70,6 +70,7 @@ fn main() -> anyhow::Result<()> { embedded_migrations::run(&conn)?; for u in urls { + debug!("Fetching feed from {u:?}"); let new = rss::fetch_new(u)?; for i in new.items() { let _ = db::insert_item(&conn, i)?; @@ -78,8 +79,8 @@ fn main() -> anyhow::Result<()> { let results = posts .filter(sent.eq(false)) - .limit(5) .order(pub_date.desc()) + .limit(5) .load::(&conn)?; send_posts(&config, results, args.dry_run)?; @@ -92,6 +93,7 @@ fn send_posts(config: &Config, items: Vec, I: Into, { - use lettre::{transport::smtp::authentication::Credentials, Message, SmtpTransport, Transport}; + use lettre::{ + message::Message, + transport::{ + smtp::{ + authentication::Credentials, + client::{Tls, TlsParameters}, + SmtpTransport, + }, + Transport, + }, + }; let email = Message::builder() .from(config.from.parse()?) @@ -118,11 +130,20 @@ where config.smtp.user.to_string(), config.smtp.password.to_string(), ); - // TODO: allow TLS, specify via config? - let mailer = SmtpTransport::builder_dangerous(config.smtp.server) - .port(config.smtp.port) + + let tls = TlsParameters::builder(config.smtp.server.to_string()) + .dangerous_accept_invalid_certs(true) + .build()?; + + let mailer = SmtpTransport::relay(config.smtp.server)? + .tls(Tls::Opportunistic(tls)) .credentials(creds) .build(); + + // TODO: extract mailer to only be constructed once and reused + // https://todo.sr.ht/~witcher/rss-email/9 + // TODO: allow TLS, specify via config? + // https://todo.sr.ht/~witcher/rss-email/8 mailer.send(&email)?; Ok(())