use reqwest::blocking::Client; use std::collections::HashMap; use std::env; fn public_uri() -> String { env::var("PUBLIC_URI").expect("PUBLIC_URI not in environment variables!") } fn portal() -> String { env::var("PORTAL_URL").expect("PORTAL_URL not in environment variables!") } pub fn send_email(target: String, subject: String, body: String, html: String) -> Result<(), ()> { let mut map = HashMap::new(); map.insert("target", target.clone()); map.insert("subject", subject); map.insert("body", body); map.insert("html", html); let client = Client::new(); match client .post(&portal()) .json(&map) .send() { Ok(_) => Ok(()), Err(_) => Err(()), } } pub fn send_verification_email(email: String, code: String) -> bool { let url = format!("{}/api/account/verify/{}", public_uri(), code); send_email( email, "Verify your email!".to_string(), format!("Verify your email here: {}", url), format!("<a href=\"{}\">Click to verify your email!</a>", url), ) .is_ok() } pub fn send_welcome_email(email: String, username: String) -> bool { send_email( email, "Welcome to REVOLT!".to_string(), format!("Welcome, {}! You can now use REVOLT.", username.clone()), format!( "<b>Welcome, {}!</b><br/>You can now use REVOLT.<br/><a href=\"{}\">Go to REVOLT</a>", username.clone(), public_uri() ), ) .is_ok() }