commit - d8e36cdaa791572f8e9abe232e1b7dbedc60ac91
commit + 7802c66670c94fb7c8d7add4760facc9cc532087
blob - f0758f37b05c45fe7aa8e87c34f6145281fd2dd5
blob + 22aa2eeb384ea1a21c61a4ac615f9becc65dd2ef
--- src/main.rs
+++ src/main.rs
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)?;
let results = posts
.filter(sent.eq(false))
- .limit(5)
.order(pub_date.desc())
+ .limit(5)
.load::<models::Post>(&conn)?;
send_posts(&config, results, args.dry_run)?;
if !dry_run {
let subject = post.title.unwrap_or_else(|| "No title found".to_string());
// TODO: always append url instead
+ // https://todo.sr.ht/~witcher/rss-email/7
let body = post.content.unwrap_or_else(|| post.url.unwrap());
send_email(config, subject, body)?;
}
S: AsRef<str>,
I: Into<String>,
{
- 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()?)
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(())