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),
+ };
+ }
+}