From 3425986902508acb6ca2a37be3c012a159e83231 Mon Sep 17 00:00:00 2001
From: Marcelo Schmidt <marcelo.schmidt@gmail.com>
Date: Wed, 11 May 2016 10:35:42 -0300
Subject: [PATCH] Add header and footer to e-mails

---
 .../server/methods/mailMessages.coffee                     | 6 +++++-
 packages/rocketchat-lib/server/lib/sendEmailOnMessage.js   | 6 +++++-
 .../rocketchat-lib/server/methods/sendSMTPTestEmail.coffee | 5 ++++-
 .../rocketchat-mailer/server/functions/sendMail.coffee     | 7 +++++--
 4 files changed, 19 insertions(+), 5 deletions(-)

diff --git a/packages/rocketchat-channel-settings-mail-messages/server/methods/mailMessages.coffee b/packages/rocketchat-channel-settings-mail-messages/server/methods/mailMessages.coffee
index ed2d4a29002..d32bc456d5a 100644
--- a/packages/rocketchat-channel-settings-mail-messages/server/methods/mailMessages.coffee
+++ b/packages/rocketchat-channel-settings-mail-messages/server/methods/mailMessages.coffee
@@ -40,6 +40,10 @@ Meteor.methods
 				Function(localeFn)()
 
 		html = ""
+
+		header = RocketChat.placeholders.replace(RocketChat.settings.get('Email_Header') || "")
+		footer = RocketChat.placeholders.replace(RocketChat.settings.get('Email_Footer') || "")
+
 		RocketChat.models.Messages.findByRoomIdAndMessageIds(data.rid, data.messages, { sort: { ts: 1 } }).forEach (message) ->
 			dateTime = moment(message.ts).locale(data.language).format('L LT')
 			html += "<p style='margin-bottom: 5px'><b>#{message.u.username}</b> <span style='color: #aaa; font-size: 12px'>#{dateTime}</span><br />" + RocketChat.Message.parse(message, data.language) + "</p>"
@@ -50,7 +54,7 @@ Meteor.methods
 				from: RocketChat.settings.get('From_Email')
 				replyTo: email
 				subject: data.subject
-				html: html
+				html: header + html + footer
 
 			console.log 'Sending email to ' + emails.join(', ')
 
diff --git a/packages/rocketchat-lib/server/lib/sendEmailOnMessage.js b/packages/rocketchat-lib/server/lib/sendEmailOnMessage.js
index 61d279b2301..f297548f559 100644
--- a/packages/rocketchat-lib/server/lib/sendEmailOnMessage.js
+++ b/packages/rocketchat-lib/server/lib/sendEmailOnMessage.js
@@ -37,7 +37,11 @@ RocketChat.callbacks.add('afterSaveMessage', function(message, room) {
 			message.html = message.html.replace(token.token, token.text);
 		});
 	}
-	message.html = message.html.replace(/\n/gm, '<br/>');
+
+
+	var header = RocketChat.placeholders.replace(RocketChat.settings.get('Email_Header') || '');
+	var footer = RocketChat.placeholders.replace(RocketChat.settings.get('Email_Footer') || '');
+	message.html = header + message.html.replace(/\n/gm, '<br/>') + footer;
 
 	RocketChat.models.Subscriptions.findWithSendEmailByRoomId(room._id).forEach((sub) => {
 		switch (sub.emailNotifications) {
diff --git a/packages/rocketchat-lib/server/methods/sendSMTPTestEmail.coffee b/packages/rocketchat-lib/server/methods/sendSMTPTestEmail.coffee
index e546ed4ad1d..e87f70bdd30 100644
--- a/packages/rocketchat-lib/server/methods/sendSMTPTestEmail.coffee
+++ b/packages/rocketchat-lib/server/methods/sendSMTPTestEmail.coffee
@@ -9,11 +9,14 @@ Meteor.methods
 
 		this.unblock()
 
+		header = RocketChat.placeholders.replace(RocketChat.settings.get('Email_Header') || '');
+		footer = RocketChat.placeholders.replace(RocketChat.settings.get('Email_Footer') || '');
+
 		Email.send
 			to: user.emails[0].address
 			from: RocketChat.settings.get('From_Email')
 			subject: "SMTP Test Email"
-			html: "You have successfully sent an email"
+			html: header + "<p>You have successfully sent an email</p>" + footer
 
 		console.log 'Sending email to ' + user.emails[0].address
 
diff --git a/packages/rocketchat-mailer/server/functions/sendMail.coffee b/packages/rocketchat-mailer/server/functions/sendMail.coffee
index 78199eb59cf..d6fa86beb87 100644
--- a/packages/rocketchat-mailer/server/functions/sendMail.coffee
+++ b/packages/rocketchat-mailer/server/functions/sendMail.coffee
@@ -9,6 +9,9 @@ Mailer.sendMail = (from, subject, body, dryrun, query) ->
 	if body.indexOf('[unsubscribe]') is -1
 		throw new Meteor.Error 'error-missing-unsubscribe-link', 'You must provide the [unsubscribe] link.', { function: 'Mailer.sendMail' }
 
+	header = RocketChat.placeholders.replace(RocketChat.settings.get('Email_Header') || '');
+	footer = RocketChat.placeholders.replace(RocketChat.settings.get('Email_Footer') || '');
+
 	userQuery = { "mailer.unsubscribed": { $exists: 0 } }
 	if query
 		userQuery = { $and: [ userQuery, EJSON.parse(query) ] }
@@ -32,7 +35,7 @@ Mailer.sendMail = (from, subject, body, dryrun, query) ->
 						to: email
 						from: from
 						subject: subject
-						html: html
+						html: header + html + footer
 
 				console.log 'Sending email to ' + email
 
@@ -55,6 +58,6 @@ Mailer.sendMail = (from, subject, body, dryrun, query) ->
 						to: email
 						from: from
 						subject: subject
-						html: html
+						html: header + html + footer
 
 				console.log 'Sending email to ' + email
-- 
GitLab