EmailSender.coffee 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. logger = require('logger-sharelatex')
  2. metrics = require('../../infrastructure/Metrics')
  3. Settings = require('settings-sharelatex')
  4. metrics = require("../../infrastructure/Metrics")
  5. ses = require('node-ses')
  6. if Settings.email? and Settings.email.fromAddress?
  7. defaultFromAddress = Settings.email.fromAddress
  8. else
  9. defaultFromAddress = ""
  10. if Settings.email?.ses? and Settings.email.ses?.key? and Settings.email.ses?.key != "" and Settings.email.ses?.secret? and Settings.email.ses?.secret != ""
  11. client = ses.createClient({ key: Settings.email.ses.key, secret: Settings.email.ses.secret });
  12. else
  13. logger.warn "AWS SES credentials are not configured. No emails will be sent."
  14. client =
  15. sendemail: (options, callback = (err, data, res) ->) ->
  16. logger.log options: options, "would send email if SES credentials enabled"
  17. callback()
  18. module.exports =
  19. sendEmail : (options, callback = (error) ->)->
  20. logger.log receiver:options.to, subject:options.subject, "sending email"
  21. metrics.inc "email"
  22. options =
  23. to: options.to
  24. from: defaultFromAddress
  25. subject: options.subject
  26. message: options.html
  27. replyTo: options.replyTo || Settings.email.replyToAddress
  28. client.sendemail options, (err, data, res)->
  29. if err?
  30. logger.err err:err, "error sending message"
  31. else
  32. logger.log "Message sent to #{options.to}"
  33. callback(err)