EmailSender.coffee 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. logger = require('logger-sharelatex')
  2. metrics = require('../../infrastructure/Metrics')
  3. Settings = require('settings-sharelatex')
  4. metrics = require("../../infrastructure/Metrics")
  5. nodemailer = require("nodemailer")
  6. if Settings.email? and Settings.email.fromAddress?
  7. defaultFromAddress = Settings.email.fromAddress
  8. else
  9. defaultFromAddress = ""
  10. # provide dummy mailer unless we have a better one configured.
  11. client =
  12. sendMail: (options, callback = (err,status) ->) ->
  13. logger.log options:options, "Would send email if enabled."
  14. callback()
  15. if Settings.email?
  16. if Settings.email.transport? and Settings.email.parameters?
  17. nm_client = nodemailer.createTransport( Settings.email.transport, Settings.email.parameters )
  18. if nm_client
  19. client = nm_client
  20. else
  21. logger.warn "Failed to create email transport. Please check your settings. No email will be sent."
  22. else
  23. logger.warn "Email transport and/or parameters not defined. No emails will be sent."
  24. module.exports =
  25. sendEmail : (options, callback = (error) ->)->
  26. logger.log receiver:options.to, subject:options.subject, "sending email"
  27. metrics.inc "email"
  28. options =
  29. to: options.to
  30. from: defaultFromAddress
  31. subject: options.subject
  32. html: options.html
  33. replyTo: options.replyTo || Settings.email.replyToAddress
  34. client.sendMail options, (err, res)->
  35. if err?
  36. logger.err err:err, "error sending message"
  37. else
  38. logger.log "Message sent to #{options.to}"
  39. callback(err)