diff --git a/packages/rocketchat-lib/server/lib/sendEmailOnMessage.js b/packages/rocketchat-lib/server/lib/sendEmailOnMessage.js
index c4351cc46c7..860f2232860 100644
--- a/packages/rocketchat-lib/server/lib/sendEmailOnMessage.js
+++ b/packages/rocketchat-lib/server/lib/sendEmailOnMessage.js
@@ -4,9 +4,9 @@ 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 roomName = s.escapeHTML(`#${ 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 userName = s.escapeHTML(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,
@@ -25,10 +25,10 @@ function getEmailContent({ messageContent, message, user, room }) {
lng
});
- let content = `${ TAPi18n.__('Attachment_File_Uploaded') }: ${ message.file.name }`;
+ let content = `${ TAPi18n.__('Attachment_File_Uploaded') }: ${ s.escapeHTML(message.file.name) }`;
if (message.attachments && message.attachments.length === 1 && message.attachments[0].description !== '') {
- content += `
${ message.attachments[0].description }`;
+ content += `
${ s.escapeHTML(message.attachments[0].description) }`;
}
return `${ fileHeader }
${ content }`;
@@ -40,10 +40,10 @@ function getEmailContent({ messageContent, message, user, room }) {
let content = '';
if (attachment.title) {
- content += `${ attachment.title }
`;
+ content += `${ s.escapeHTML(attachment.title) }
`;
}
if (attachment.text) {
- content += `${ attachment.text }
`;
+ content += `${ s.escapeHTML(attachment.text) }
`;
}
return `${ header }
${ content }`;
@@ -241,9 +241,9 @@ RocketChat.callbacks.add('afterSaveMessage', function(message, room) {
};
// using user full-name/channel name in from address
if (room.t === 'd') {
- email.from = `${ message.u.name } <${ RocketChat.settings.get('From_Email') }>`;
+ email.from = `${ String(message.u.name).replace(/@/g, '%40').replace(/[<>,]/g, '') } <${ RocketChat.settings.get('From_Email') }>`;
} else {
- email.from = `${ room.name } <${ RocketChat.settings.get('From_Email') }>`;
+ email.from = `${ String(room.name).replace(/@/g, '%40').replace(/[<>,]/g, '') } <${ RocketChat.settings.get('From_Email') }>`;
}
// If direct reply enabled, email content with headers
if (RocketChat.settings.get('Direct_Reply_Enable')) {