email.rs
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(())
}
}