diff --git a/src/mail.rs b/src/mail.rs index 5ce4a079..3edb21b9 100644 --- a/src/mail.rs +++ b/src/mail.rs @@ -118,7 +118,7 @@ fn sanitize_data(data: &mut serde_json::Value) { } } -fn get_text(template_name: &'static str, data: serde_json::Value) -> Result<(String, String, String), Error> { +fn get_text(template_name: &str, data: serde_json::Value) -> Result<(String, String, String), Error> { let mut data = data; sanitize_data(&mut data); let (subject_html, body_html) = get_template(&format!("{template_name}.html"), &data)?; @@ -202,23 +202,29 @@ pub async fn send_verify_email(address: &str, uuid: &str) -> EmptyResult { send_email(address, &subject, body_html, body_text).await } +async fn send_email_with_template(address: &str, template_name: &str, data: serde_json::Value) -> EmptyResult { + let (subject, body_html, body_text) = get_text(template_name, data)?; + send_email(address, &subject, body_html, body_text).await +} + pub async fn send_welcome(address: &str) -> EmptyResult { - let (subject, body_html, body_text) = get_text( + send_email_with_template( + address, "email/welcome", json!({ "url": CONFIG.domain(), "img_src": CONFIG._smtp_img_src(), }), - )?; - - send_email(address, &subject, body_html, body_text).await + ) + .await } pub async fn send_welcome_must_verify(address: &str, uuid: &str) -> EmptyResult { let claims = generate_verify_email_claims(uuid.to_string()); let verify_email_token = encode_jwt(&claims); - let (subject, body_html, body_text) = get_text( + send_email_with_template( + address, "email/welcome_must_verify", json!({ "url": CONFIG.domain(), @@ -226,35 +232,34 @@ pub async fn send_welcome_must_verify(address: &str, uuid: &str) -> EmptyResult "user_id": uuid, "token": verify_email_token, }), - )?; - - send_email(address, &subject, body_html, body_text).await + ) + .await } pub async fn send_2fa_removed_from_org(address: &str, org_name: &str) -> EmptyResult { - let (subject, body_html, body_text) = get_text( + send_email_with_template( + address, "email/send_2fa_removed_from_org", json!({ "url": CONFIG.domain(), "img_src": CONFIG._smtp_img_src(), "org_name": org_name, }), - )?; - - send_email(address, &subject, body_html, body_text).await + ) + .await } pub async fn send_single_org_removed_from_org(address: &str, org_name: &str) -> EmptyResult { - let (subject, body_html, body_text) = get_text( + send_email_with_template( + address, "email/send_single_org_removed_from_org", json!({ "url": CONFIG.domain(), "img_src": CONFIG._smtp_img_src(), "org_name": org_name, }), - )?; - - send_email(address, &subject, body_html, body_text).await + ) + .await } pub async fn send_invite(