use crate::{Config, Error}; use lettre::{Message, Transport, message::MultiPart}; pub const A_STYLE: cuach::PreEscaped<&'static str> = cuach::PreEscaped("color:#007bff;text-decoration:none;"); pub const CONTENT_STYLE: cuach::PreEscaped<&'static str> = cuach::PreEscaped("padding:1em;max-width:600px;margin:0 auto;"); pub const FOOTER_STYLE: cuach::PreEscaped<&'static str> = cuach::PreEscaped("max-width:600px;margin:10px auto;font-size: small; color: #666666;"); pub const BLOCKQUOTE_STYLE: cuach::PreEscaped<&'static str> = cuach::PreEscaped("border-left:2px solid #666666;padding-left:10px;margin:30px 0 30px 30px;"); #[derive(Debug, Clone)] pub struct Body { pub plain: String, pub html: String, } pub async fn send_email( config: &Config, subject: &str, body: Body, address: &str, ) -> Result<(), Error> { if let Some(ref mailer) = config.email { let email = Message::builder() .from(config.email_source.parse()?) .to(address.parse()?) .subject(subject) .multipart(MultiPart::alternative_plain_html(body.plain, body.html))?; match mailer.send(&email) { Ok(_) => println!("Email sent successfully!"), Err(e) => panic!("Could not send email: {e:?}"), } Ok(()) } else { Ok(()) } }