summaryrefslogtreecommitdiffstats
path: root/server/notifications/email.js
diff options
context:
space:
mode:
Diffstat (limited to 'server/notifications/email.js')
-rw-r--r--server/notifications/email.js35
1 files changed, 35 insertions, 0 deletions
diff --git a/server/notifications/email.js b/server/notifications/email.js
new file mode 100644
index 00000000..40968329
--- /dev/null
+++ b/server/notifications/email.js
@@ -0,0 +1,35 @@
+// cache the email text in a queue, and send them in a batch
+Meteor.startup(() => {
+ Notifications.subscribe('cachedEmail', (user, title, description, params) => {
+ // add quote to make titles easier to read in email text
+ const quoteParams = _.clone(params);
+ ['card', 'list', 'oldList', 'board', 'comment'].forEach((key) => {
+ if (quoteParams[key]) quoteParams[key] = `"${params[key]}"`;
+ });
+
+ const text = `${params.user} ${TAPi18n.__(description, quoteParams, user.getLanguage())}\n${params.url}`;
+ user.addEmailCache(text);
+
+ const userId = user._id;
+ Meteor.setTimeout(() => {
+ const user = Users.findOne(userId);
+
+ const emailCache = user.getEmailCache();
+ if (emailCache.length === 0) return;
+
+ const text = emailCache.join('\n\n');
+ user.clearEmailCache();
+
+ try {
+ Email.send({
+ to: user.emails[0].address,
+ from: Accounts.emailTemplates.from,
+ subject : TAPi18n.__('act-activity-notify', {}, user.getLanguage()),
+ text,
+ });
+ } catch (e) {
+ return;
+ }
+ }, 30000, user._id);
+ });
+});