diff --git a/lemmy_api/src/user.rs b/lemmy_api/src/user.rs index ad3d98087..6dffc1a79 100644 --- a/lemmy_api/src/user.rs +++ b/lemmy_api/src/user.rs @@ -38,7 +38,7 @@ use lemmy_db::{ ListingType, SortType, }; -use lemmy_structs::{blocking, user::*}; +use lemmy_structs::{blocking, send_email_to_user, user::*}; use lemmy_utils::{ apub::{generate_actor_keypair, make_apub_endpoint, EndpointType}, email::send_email, @@ -61,7 +61,6 @@ use lemmy_websocket::{ LemmyContext, UserOperation, }; -use log::error; use std::str::FromStr; #[async_trait::async_trait(?Send)] @@ -1041,23 +1040,12 @@ impl Perform for CreatePrivateMessage { let recipient_user = blocking(context.pool(), move |conn| User_::read(conn, recipient_id)).await??; if recipient_user.send_notifications_to_email { - if let Some(email) = recipient_user.email { - let subject = &format!( - "{} - Private Message from {}", - Settings::get().hostname, - user.name, - ); - let html = &format!( - "

Private Message


{} - {}

inbox", - user.name, - &content_slurs_removed, - Settings::get().get_protocol_and_hostname() - ); - match send_email(subject, &email, &recipient_user.name, html) { - Ok(_o) => _o, - Err(e) => error!("{}", e), - }; - } + send_email_to_user( + recipient_user, + "Private Message from", + "Private Message", + &content_slurs_removed, + ); } let message = blocking(context.pool(), move |conn| { diff --git a/lemmy_structs/src/lib.rs b/lemmy_structs/src/lib.rs index 9b67866a9..5d2e42733 100644 --- a/lemmy_structs/src/lib.rs +++ b/lemmy_structs/src/lib.rs @@ -77,7 +77,6 @@ fn do_send_local_notifs( do_send_email: bool, ) -> Vec { let mut recipient_ids = Vec::new(); - let hostname = &Settings::get().get_protocol_and_hostname(); // Send the local mentions for mention in mentions @@ -106,17 +105,12 @@ fn do_send_local_notifs( // Send an email to those users that have notifications on if do_send_email && mention_user.send_notifications_to_email { - if let Some(mention_email) = mention_user.email { - let subject = &format!("{} - Mentioned by {}", Settings::get().hostname, user.name,); - let html = &format!( - "

User Mention


{} - {}

inbox", - user.name, comment.content, hostname - ); - match send_email(subject, &mention_email, &mention_user.name, html) { - Ok(_o) => _o, - Err(e) => error!("{}", e), - }; - } + send_email_to_user( + mention_user, + "Mentioned by", + "User Mention", + &comment.content, + ) } } } @@ -130,17 +124,7 @@ fn do_send_local_notifs( recipient_ids.push(parent_user.id); if do_send_email && parent_user.send_notifications_to_email { - if let Some(comment_reply_email) = parent_user.email { - let subject = &format!("{} - Reply from {}", Settings::get().hostname, user.name,); - let html = &format!( - "

Comment Reply


{} - {}

inbox", - user.name, comment.content, hostname - ); - match send_email(subject, &comment_reply_email, &parent_user.name, html) { - Ok(_o) => _o, - Err(e) => error!("{}", e), - }; - } + send_email_to_user(parent_user, "Reply from", "Comment Reply", &comment.content) } } } @@ -153,17 +137,7 @@ fn do_send_local_notifs( recipient_ids.push(parent_user.id); if do_send_email && parent_user.send_notifications_to_email { - if let Some(post_reply_email) = parent_user.email { - let subject = &format!("{} - Reply from {}", Settings::get().hostname, user.name,); - let html = &format!( - "

Post Reply


{} - {}

inbox", - user.name, comment.content, hostname - ); - match send_email(subject, &post_reply_email, &parent_user.name, html) { - Ok(_o) => _o, - Err(e) => error!("{}", e), - }; - } + send_email_to_user(parent_user, "Reply from", "Post Reply", &comment.content) } } } @@ -171,3 +145,29 @@ fn do_send_local_notifs( }; recipient_ids } + +pub fn send_email_to_user(user: User_, subject_text: &str, body_text: &str, comment_content: &str) { + if user.banned { + return; + } + + if let Some(user_email) = user.email { + let subject = &format!( + "{} - {} {}", + subject_text, + Settings::get().hostname, + user.name, + ); + let html = &format!( + "

{}


{} - {}

inbox", + body_text, + user.name, + comment_content, + Settings::get().get_protocol_and_hostname() + ); + match send_email(subject, &user_email, &user.name, html) { + Ok(_o) => _o, + Err(e) => error!("{}", e), + }; + } +}