EmailHandler.js 870 B

12345678910111213141516171819202122232425262728293031323334
  1. const { callbackify } = require('util')
  2. const Settings = require('@overleaf/settings')
  3. const EmailBuilder = require('./EmailBuilder')
  4. const EmailSender = require('./EmailSender')
  5. const Queues = require('../../infrastructure/Queues')
  6. const EMAIL_SETTINGS = Settings.email || {}
  7. module.exports = {
  8. sendEmail: callbackify(sendEmail),
  9. sendDeferredEmail,
  10. promises: {
  11. sendEmail,
  12. },
  13. }
  14. async function sendEmail(emailType, opts) {
  15. const email = EmailBuilder.buildEmail(emailType, opts)
  16. if (email.type === 'lifecycle' && !EMAIL_SETTINGS.lifecycle) {
  17. return
  18. }
  19. opts.html = email.html
  20. opts.text = email.text
  21. opts.subject = email.subject
  22. await EmailSender.promises.sendEmail(opts, emailType)
  23. }
  24. function sendDeferredEmail(emailType, opts, delay) {
  25. Queues.createScheduledJob(
  26. 'deferred-emails',
  27. { data: { emailType, opts } },
  28. delay
  29. )
  30. }