This website
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(())
    }
}