EmailManager.coffee 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. logger = require('logger-sharelatex')
  2. Settings = require('settings-sharelatex')
  3. Path = require "path"
  4. _ = require('underscore')
  5. metrics = require('../infrastructure/Metrics')
  6. fs = require("fs")
  7. if Settings.ses?.key? and Settings.ses?.key != "" and Settings.ses?.secret? and Settings.ses?.secret != ""
  8. ses = require('node-ses')
  9. client = ses.createClient({ key: Settings.ses.key, secret: Settings.ses.secret });
  10. else
  11. logger.warn "AWS SES credentials are not configured. No emails will be sent."
  12. client =
  13. sendemail: (options, callback = (err, data, res) ->) ->
  14. logger.log options: options, "would send email if SES credentials enabled"
  15. callback()
  16. module.exports =
  17. sendEmail : (options, callback = (error) ->)->
  18. logger.log options:options, "sending email"
  19. metrics.inc "email"
  20. template = options.template_name || "emailTemplate"
  21. fs.readFile Path.resolve(__dirname + "/../../templates/email/#{template}.html"), (err, htmlTemplate)->
  22. logger.error err: err, "error sending email" if err?
  23. return callback(err) if err?
  24. compiledTemplate = _.template htmlTemplate.toString()
  25. htmlMessage = compiledTemplate
  26. previewMessage : options.subject
  27. heading : options.heading
  28. message: options.message
  29. view_data:options.view_data
  30. options =
  31. to: options.receiver
  32. from: "ShareLaTeX <team@sharelatex.com>"
  33. subject: options.subject
  34. message: htmlMessage
  35. replyTo: options.replyTo || "team@sharelatex.com"
  36. client.sendemail options, (err, data, res)->
  37. return callback(err) if err?
  38. if err?
  39. logger.log "error sending message"
  40. else
  41. logger.log "Message sent to #{options.to}"
  42. callback()