diff --git a/packages/rocketchat-i18n/i18n/en.i18n.json b/packages/rocketchat-i18n/i18n/en.i18n.json
index 9613ce95afcc..c91d596529f2 100644
--- a/packages/rocketchat-i18n/i18n/en.i18n.json
+++ b/packages/rocketchat-i18n/i18n/en.i18n.json
@@ -1930,6 +1930,10 @@
"Username_is_already_in_here": "`@%s` is already in here.",
"Username_is_not_in_this_room": "The user `#%s` is not in this room.",
"Username_Placeholder": "Please enter usernames...",
+ "User_sent_a_message_on_channel": "__username__ sent a message on __channel__:",
+ "User_uploaded_a_file_on_channel": "__username__ uploaded a file on __channel__:",
+ "User_sent_a_message_to_you": "__username__ sent you a message:",
+ "User_uploaded_a_file_to_you": "__username__ sent you a file:",
"Username_title": "Register username",
"Username_wants_to_start_otr_Do_you_want_to_accept": "__username__ wants to start OTR. Do you want to accept?",
"Users": "Users",
diff --git a/packages/rocketchat-i18n/i18n/pt.i18n.json b/packages/rocketchat-i18n/i18n/pt.i18n.json
index 39bced0b33f8..8d3b571611f4 100644
--- a/packages/rocketchat-i18n/i18n/pt.i18n.json
+++ b/packages/rocketchat-i18n/i18n/pt.i18n.json
@@ -1246,6 +1246,10 @@
"User_removed": "Usuário removido",
"User_removed_by": "Usuário __user_removed__ removido da conversa por __user_by__.",
"User_Settings": "Configurações do Usuário",
+ "User_sent_a_message_on_channel": "__username__ enviou uma mensagem em __channel__:",
+ "User_uploaded_a_file_on_channel": "__username__ enviou um arquivo em __channel__:",
+ "User_sent_a_message_to_you": "__username__ enviou uma mensagem para você:",
+ "User_uploaded_a_file_to_you": "__username__ enviou um arquivo para você:",
"User_unmuted_by": "__user_by__ permitiu que __user_unmuted__ fale na sala.",
"User_unmuted_in_room": "Usuário pode falar na sala",
"User_updated_successfully": "Usuário atualizado com sucesso",
diff --git a/packages/rocketchat-lib/server/lib/sendEmailOnMessage.js b/packages/rocketchat-lib/server/lib/sendEmailOnMessage.js
index 28219a3394ca..336bcf6f4821 100644
--- a/packages/rocketchat-lib/server/lib/sendEmailOnMessage.js
+++ b/packages/rocketchat-lib/server/lib/sendEmailOnMessage.js
@@ -1,6 +1,57 @@
import moment from 'moment';
import s from 'underscore.string';
+function getEmailContent({ messageContent, message, user, room }) {
+ const lng = user && user.language || RocketChat.settings.get('language') || 'en';
+
+ const roomName = `#${ RocketChat.settings.get('UI_Allow_room_names_with_special_chars') ? room.fname || room.name : room.name }`;
+
+ const userName = RocketChat.settings.get('UI_Use_Real_Name') ? message.u.name || message.u.username : message.u.username;
+
+ const header = TAPi18n.__(room.t === 'd' ? 'User_sent_a_message_to_you' : 'User_sent_a_message_on_channel', {
+ username: userName,
+ channel: roomName,
+ lng
+ });
+
+ if (messageContent) {
+ return `${ header }
${ messageContent }`;
+ }
+
+ if (message.file) {
+ const fileHeader = TAPi18n.__(room.t === 'd' ? 'User_uploaded_a_file_to_you' : 'User_uploaded_a_file_on_channel', {
+ username: userName,
+ channel: roomName,
+ lng
+ });
+
+ let content = `${ TAPi18n.__('Attachment_File_Uploaded') }: ${ message.file.name }`;
+
+ if (message.attachments && message.attachments.length === 1 && message.attachments[0].description !== '') {
+ content += `
${ message.attachments[0].description }`;
+ }
+
+ return `${ fileHeader }
${ content }`;
+ }
+
+ if (message.attachments.length > 0) {
+ const [ attachment ] = message.attachments;
+
+ let content = '';
+
+ if (attachment.title) {
+ content += `${ attachment.title }
`;
+ }
+ if (attachment.text) {
+ content += `${ attachment.text }
`;
+ }
+
+ return `${ header }
${ content }`;
+ }
+
+ return header;
+}
+
RocketChat.callbacks.add('afterSaveMessage', function(message, room) {
// skips this callback if the message was edited
if (message.editedAt) {
@@ -26,19 +77,23 @@ RocketChat.callbacks.add('afterSaveMessage', function(message, room) {
};
const divisorMessage = '