diff options
Diffstat (limited to 'server/notifications/email.js')
-rw-r--r-- | server/notifications/email.js | 35 |
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); + }); +}); |